Javaテキストコンポーネントを作成していますが、速度の理由から、中に大きなテキストファイルを部分的にロードしようとしています。部分的に異なるエンコーディングで大きなテキストファイルをロードする
私の質問は、テキストがUTF8、Big5、GBKなどのマルチバイトエンコード形式であるかどうかです。テキストを正しくデコードできるようにバイトをどのように揃えることができますか?
Javaテキストコンポーネントを作成していますが、速度の理由から、中に大きなテキストファイルを部分的にロードしようとしています。部分的に異なるエンコーディングで大きなテキストファイルをロードする
私の質問は、テキストがUTF8、Big5、GBKなどのマルチバイトエンコード形式であるかどうかです。テキストを正しくデコードできるようにバイトをどのように揃えることができますか?
私は他のフォーマットについては話すことができませんが、utf8はあまりにも難しくありません。
はちょうどあなたがつかんチャンクの最初のバイトを見て、そこから把握:ウィキペディアからの引用
:
00000000-01111111 00-7F 0-127 US-ASCII (single byte)
10000000-10111111 80-BF 128-191 2'nd, 3rd, or 4'th byte of a multi-byte sequence
11000000-11000001 C0-C1 192-193 start of a 2-byte sequence, but code point <= 127
11000010-11011111 C2-DF 194-223 Start of 2-byte sequence
11100000-11101111 E0-EF 224-239 Start of 3-byte sequence
11110000-11110100 F0-F4 240-244 Start of 4-byte sequence
をバイトは第2 'または3'rdグループ内にある場合あなたはあなたがキャラクターの一部を見逃したことを知っています。それが1番、4番、5番、6番のグループに入っていると、キャラクターの先頭にいることがわかります。それに応じて続行します。
JeremyのUTF-8に関するコメント、UTF-16などのエンコーディングのほかに、あなたは正しいアライメントがあるかどうかを判断するためにいくつかの常識的ヒューリスティックを使用できます。たとえば、基本的にラテン文字と奇妙なエキゾチックな文字の半分が256より上に出てくることを期待しているとしたら、おそらく間違った位置合わせをしているでしょう...
ロードする前にエンコードを知っていますか?ファイル? –