将 wchar_t* 写入文件 - 仅适用于某些字符

Write wchar_t* to file - works only for some characters

我有 returns 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í

更让我困惑的是,“í”等某些字符有效,而“č”等其他字符无效。

这适用于 Windows...更改您的 mode 参数以具有显式编码...

FILE *file = fopen("foobar.txt", "a+, ccs=UTF-16LE");

FILE *file = fopen("foobar.txt", "a+, ccs=UTF-8");

这似乎是将字节顺序标记 (FF FE) 强制添加到文件头以指示文件的文本是 Unicode。

必须使用适当的 BOM 创建文件。以下是最首选的方法,并确保您只将 UTF-8 字符转储到文件中。并通过notepad++打开查看。

FILE *file = fopen("test.txt", "a+, ccs=UTF-8");