4

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

4

3 回答 3

3

梵文代码点都在 BMP 中(主块位于 U+0900,另外一些位于 U+A8F0),因此如果文本文件编码为 UTF-16,则所有字符仅占用一个 16 位字每个。
(不要以为情况总是如此。)

于 2012-11-16T18:33:52.623 回答
1

找到了解决办法!!我只需要以二进制模式打开文件。否则,某些字符显然会被忽略。非常感谢所有帮助的人!

于 2012-11-16T18:50:48.877 回答
1

只回答第二个问题:

梵文脚本字符在基本多语言平面中。它们都是 16 位宽的,所以你在那里很安全。否则,您将不得不弄乱代理对

于 2012-11-16T18:33:46.407 回答