2009-07-30 9 views
4

UTF-8エンコーディングでUnicodeであるテキストファイルを読み込んで、このデータを別のテキストファイルに書き込む必要があります。このファイルにはタブで区切られたデータが行単位で表示されます。ユニコード以外のコードでUTF-8ユニコードファイルを読み取る

私の読書コードは、ユニコードをサポートしていないC++コードです。私がやっているのは、ファイルをstring/char*で1行ずつ読み込み、その文字列をそのまま出力先ファイルに置くことです。私はコード変更提案を歓迎しないようにコードを変更することはできません。

私が知りたいことは、行単位で読むときに、行内でNULL終了文字( '\ 0')が発生する可能性があります。これは、Unicodeであり、1文字が複数バイトにまたがることができるからです。

私の考えは、NULL終端文字が行内で遭遇する可能性が非常に高いということでした。あなたの考え?

答えて

13

UTF-8に設定上位ビットが標準と同じコード値を持つすべてのASCII文字、ために1つのバイトを使用していますASCIIエンコーディング、その他の文字は最大4バイトです。各バイトの上位ビットは制御ビットとして予約されています。 1バイト以上を使用するコード・ポイントの場合、制御ビットが設定されます。

したがって、UTF-8ファイルには0文字は含まれません。

チェックWikipedia for UTF-8

+2

実際には、UTF-8は、ASCII範囲がそれぞれ1バイトで格納され、 'strcpy()に渡されたときに合理的に動作するエンコーディングを持つと便利です。とその友人。 – RBerteig

1

非常に低い:UTF-8エスケープシーケンス内のすべてのバイトが1

+0

モーリス、この文をサポートしている任意の参照はありますか? – Aamir

+0

CsTamasのメッセージを参照してください。 –

+2

http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8を参照してください。 –

関連する問題