使用C ++的Unicode文件函数

时间:2012-11-16 17:21:52

标签: c++ visual-c++ unicode io

我正在尝试读取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个字节宽。

3 个答案:

答案 0 :(得分:3)

梵文代码点都在BMP中(你有U + 0900的主要块和U + A8F0的一些额外的代码点),所以如果文本文件被编码为UTF-16,那么所有字符只占一个16每个字位。
(不要以为情况总是如此。)

答案 1 :(得分:1)

只回答第二个问题:

梵文脚本字符位于Basic Multilingual Plane。它们都是16位宽,所以你在那里安全。否则你将不得不混淆surrogate pairs

答案 2 :(得分:1)

找到解决方案!! 我只需要以二进制模式打开文件。否则显然会忽略一些字符。 非常感谢所有帮助人员!