2009-04-07 12:00:56
| 分類:
預設分類|舉報
|字型大小訂閱
基本方法:
使用vs2005提供的功能讀utf-8文字檔案,並將內容轉存在以unicode儲存的記憶體空間;如果需要寫出則使用二進位制方式開啟檔案,使用windows api函式widechartomultibyte轉換好後再輸出內容到輸出檔案中。
讀檔案:
開啟檔案
file *fp;
fopen_s(&fp, "file.txt", "rt, ccs=unicode");
或者fopen_s(&fp, "file.txt", "rt, ccs=utf-8");
都可以
讀wchar_t line[buff_size];
wchar_t str = fgetws(line, buff_size, fp);
if (str == null)
寫檔案
開啟檔案
file *fp;
fopen_s(&fp, "fileout.txt", "w+b");
寫utf-8檔案頭(必須在後續寫之前)
char line[3]; // utf-8 file header
line[0] = 0xef;
line[1] = 0xbb;
line[2] = 0xbf;
fwrite(line, sizeof(char), 3, fp);
寫一行void writeutf8textline(file *f, cstring str) // inline function
// file must be opened in binary mode
// write unicode string str to utf-8 file stream as a text line
其他方法:
使用icu library(
Windows下列印utf 8檔案
估計入門時都會遇到的。我是在windows下用的python25自帶的idle編輯執行的,發現執行指令碼得出的結果有一些中文顯示是亂碼,但有一些是 正常的。百思不得其解。首先檢視了一下原始檔的編碼格式,是utf 8。經過搜尋再搜尋,除錯再除錯,也換了幾個編譯器,發現比idle還糟糕 可能需要 進行e...
去除 UTF 8 檔案 BOM 頭
bom 全稱是 byte order mark 位元組順序標記 出現在文字檔案頭部,unicode 編碼標準中用於標識檔案是採用哪種格式的編碼。比如 當用記事本儲存乙個以 utf 8 編碼的檔案時,會自動在檔案開始自動插入三個不可見字元 0xef 0xbb 0xbf 但是通常情況下不需要這個頭部來識...
在Qt中建立UTF 8檔案
試圖在qt中建立乙個utf 8編碼的檔案 int main qtextstream streamfileout fileout streamfileout.setcodec utf 8 streamfileout unicodestring streamfileout.flush fileout.c...