我有一些返回unicode文本的方法,我需要将它们写到文件中,但是没有写一些字符。我有以下内容:
const wchar_t* getStandardText() {
return L"test";
}
const wchar_t* getUnicodeText()
{
return L"testíček";
}
int main()
{
FILE *file = fopen(FILE_NAME, "a");
fputws(getStandardText(), file);
fputws(getUnicodeText(), file);
fclose(file);
}
文件输出:
testtestí
让我更加困惑的是,某些字符(如“í”)有效,而另一些字符(如“č”)无效。
答案 0 :(得分:3)
这在Windows上有效...更改您的mode
参数以具有明确的编码...
FILE *file = fopen("foobar.txt", "a+, ccs=UTF-16LE");
OR
FILE *file = fopen("foobar.txt", "a+, ccs=UTF-8");
这似乎迫使字节序标记(FF FE
)指向文件标题,以指示文件的文本为Unicode。
答案 1 :(得分:1)
必须使用适当的BOM创建文件。以下是最优选的方法,并确保仅将UTF-8字符转储到文件中。并通过记事本++打开以查看它。
FILE *file = fopen("test.txt", "a+, ccs=UTF-8");