我在c程序中以unicode写入文件时遇到了一些问题。我正在尝试将unicode日语字符串写入文件。当我去检查文件虽然它是空的。如果我尝试非unicode字符串,它可以正常工作。我做错了什么?
setlocale(LC_CTYPE, "");
FILE* f;
f = _wfopen(COMMON_FILE_PATH,L"w");
fwprintf(f,L"日本語");
fclose(f);
关于我的系统哦: 我正在运行Windows。我的IDE是Visual Studio 2008。
答案 0 :(得分:8)
您可能需要将编码添加到模式中。可能是这样的:
f = _wfopen(COMMON_FILE_PATH,L"w, ccs=UTF-16LE");
答案 1 :(得分:0)
对fopen()
做同样的事情对我有用。我使用的是Mac OS X,所以我没有_wfopen()
;假设_wfopen()
未向您返回不良内容,您的代码应该可以正常工作。
编辑:我也在cygwin上测试过 - 它似乎工作正常。
答案 2 :(得分:0)
我无法在我的任何一个盒子上找到_wfopen的引用,但是我不明白为什么用fopen打开它应该会导致问题,你只需要一个文件指针。
重要的是,如果C识别内部Unicode的值并将这些二进制值正确地推送到文件中。
试着像Carl建议的那样使用fopen,它应该可以正常工作。
编辑:如果它仍然不起作用你可以尝试将字符定义为它们的整数值并用fwprintf()推送它们,我知道这很麻烦,从长远来看也不是一个好的修复,但它应该也能正常工作