我正在尝试读取Unicode文本文件并将读回的数据写回文本文件。这是代码。阅读工作正常。我可以告诉,因为它在控制台上显示错误字符,但输出文本文件为空。任何帮助将不胜感激!
int main() {
wchar_t *filename=L"normal.txt";
FILE *infile;
infile=_wfopen(filename,L"r");
wchar_t b[2];
fwscanf(infile,L"%ls",b);
wprintf(L"The string read was :%ls\n",b);//Read a character from the file
FILE *outfile;
wchar_t *filetwo = L"one.txt";
outfile=_wfopen(filetwo,L"w, ccs=UTF-16LE");
fwprintf(outfile,L"%ls",b);
fclose(outfile);
getch();
return 0;
}
另外,我需要特别处理梵文脚本。他们需要多少字节?如果它是4,那么关于如何处理使用wchar_t
的人的任何线索,因为它只有2个字节宽。
答案 0 :(得分:3)
梵文代码点都在BMP中(你有U + 0900的主要块和U + A8F0的一些额外的代码点),所以如果文本文件被编码为UTF-16,那么所有字符只占一个16每个字位。
(不要以为情况总是如此。)
答案 1 :(得分:1)
只回答第二个问题:
梵文脚本字符位于Basic Multilingual Plane。它们都是16位宽,所以你在那里安全。否则你将不得不混淆surrogate pairs。
答案 2 :(得分:1)
找到解决方案!! 我只需要以二进制模式打开文件。否则显然会忽略一些字符。 非常感谢所有帮助人员!