MFC在Unicode字符集下讀寫ANSI編碼檔案

2021-08-25 08:13:51 字數 991 閱讀 9835

讀取ansi編碼檔案時,先將檔案儲存在char*指向的記憶體內,而後使用轉換將char*轉換為w_char_t*。wchar_t*可以使用cstring的

format函式。

cfile file(_t("test.txt"), cfile::moderead);//讀ansi編碼的檔案

int filelen = file.getlength();

char *p = new char[filelen + 1];

file.read(p, filelen);

p[filelen] = '\0';

uses_conversion;//轉化為wchar_t* 可以使用cstring的format函式。

wchar_t* wp = new wchar_t[filelen + 1];

wp = a2t(p);

str.format(_t("%s"), wp)

file.close();

寫ansi檔案時,將unicode編碼的cstring轉化為ansi編碼的cstringa,要獲取ansi格式的字元只需要使用

getbuffer即可。也可使用widechartomultibyte轉換。

cstringa str_ansi(str.getbuffer(0));

cfile file_ansi(_t("test_ansi.txt"), cfile::modecreate | cfile::modewrite);//寫ansi編碼的檔案

file_ansi.write(str_ansi.getbuffer(), str_ansi.getlength());

//cfile file_ansi(_t("test_ansi.txt"), cfile::modecreate | cfile::modewrite);

//file_ansi.write(p, filelen);

file_ansi.close();

Unicode字符集和多字符集

由於各國語言的加入,ascii已經不能滿足資訊交流的需要,因此,為了能夠表示其它國家的文字,各國在ascii的基礎上制定了自己的字符集,它們正式的名稱應該是mbcs multi byte chactacter system,即多位元組字元系統 型別說明 unicode ansi 通用型別 字元wch...

雜記 Unicode字符集

unicode是字符集,但是微軟在windows上把unicode視為utf 16,即乙個字元佔2個位元組16位。utf 16是unicode的一種編碼規則,與此同時還有utf 8 utf 32。utf 8將一些字元編碼為1個位元組,一些字元編碼為2個位元組,一些字元編碼為3個位元組,一些字元編碼為...

Unicode字符集詳解

一句來自 三國 中的話 分久必合合久必分,各個字符集之間也存在的分久必合的現象。隨著國際標準iso10646規定的通用字符集 ucs,全稱universal mutiple octet doded character set 的發布,各種字符集之間不統一和諧的問題就得到了改觀。utf編碼,全稱是un...