【发布时间】:2012-05-17 09:38:18
【问题描述】:
使用 fopen 打开文件时,我使用 ccs=encoding(如 MSDN 中所述)将编码设置为 UTF-8。
写入文件时它工作正常
wchar_t* unicode_text = L"こんにちは";
FILE* f = fopen("C:\\test.txt", "w,ccs=UTF-8");
fwprintf(f, L"%s\n", unicode_text);
fclose(f);
当我在文本编辑器中打开文件时,unicode 会按原样显示。 但是在尝试从创建的文件中读取时,未检测到 UTF-8 编码:
wchar_t buffer[1000];
FILE* f = fopen("C:\\test.txt", "r,ccs=UTF-8");
fgetws(buffer, 1000, f);
fclose(f);
MessageBoxW(0, buffer, 0, 0);
这会在消息框中显示“ããã«ã¡ã¯”。
为什么会这样? ccs=UTF-8 是否只在打开文件写入时有效?
【问题讨论】:
-
ããã«ã¡ã¯绝对不是 ASCII。事实上,它完全是非-ASCII。 -
很公平,我已经删除了关于 ASCII 的部分。
-
你为什么要尝试做这种丑陋的非标准黑客,而不是仅仅要求以 UTF-8 语言环境开头或使用
iconv(干净/便携的方式)?
标签: c windows visual-studio fopen