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;
}

また、特にデーバナーガリー文字を扱う必要があります。彼らは何バイトかかりますか?wchar_t4の場合、幅が2バイトしかないため、使用しているユーザーに対処するための手がかりがあります。

4

3 に答える 3

3

デーバナーガリーコードポイントはすべてBMPに含まれているため(メインブロックはU + 0900にあり、追加のブロックはU + A8F0にあります)、テキストファイルがUTF-16としてエンコードされている場合、すべての文字は1つの16ビットワードのみを使用します。各。
(ただし、常にそうなるとは限りません。)

于 2012-11-16T18:33:52.623 に答える
1

2番目の質問にのみ答えます:

デーバナーガリー文字は基本多言語面にあります。それらはすべて16ビット幅なので、安全です。そうしないと、サロゲートペアをいじる必要があります。

于 2012-11-16T18:33:46.407 に答える
1

解決策を見つけました!! ファイルをバイナリモードで開く必要がありました。それ以外の場合、一部の文字は無視されるようです。すべての助けてくれてありがとう!

于 2012-11-16T18:50:48.877 に答える