将 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 使用 VS 2015 Pro。
- 我使用 Notepad++ 读取文件,它告诉我文件有 ANSI 编码。
这适用于 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");
我有 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 使用 VS 2015 Pro。
- 我使用 Notepad++ 读取文件,它告诉我文件有 ANSI 编码。
这适用于 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");