文字配列(char*
)のマルチバイト文字エンコーディング(UTF-8、UTF-16など)を検出するためのC/C++ライブラリはありますか。マッチャが停止したとき、つまりという接頭辞の可能なエンコーディングのセットの一致範囲を検出すると、ボーナスも検出されます。マルチバイト文字エンコーディングの検出
答えて
ICUはcharacter set detectionです。
これは、統計と ヒューリスティックを使用した不正確な操作であることに注意してください。このため、ほとんど 言語にある文字データのうち、少なくとも数百バイトの文字を で提供すると、検出が最も効果的です。
nice - 私はそれを知らなかった。しかし、私が言ったように、それはヒューリスティックでなければならない。 +1 –
入力がASCIIのみの場合、ストリームに上位ビットセットのバイトがあった場合に、何を処理するべきかを検出する方法がありません。その場合はUTF-8を選んでください。
UTF-8とISO-8859-xの違いは、入力をUTF-8として解析し、解析が失敗した場合はISO-8859にフォールバックすることができます。実際にを検出する方法はありません。 ISO-8859の亜種があります。私はFirefoxが自動検出しようとする方法を見てみることをお勧めしますが、それは絶対確実ではなく、おそらく入力がHTMLであることにかかっています。
一般に、テキストにエンコーディングを示す特別なマークがある場合を除いて、文字エンコーディングを検出する可能性はありません。一部のエンコーディングにのみ存在する文字を含む単語を含む辞書を使用して、ヒューリスティックにエンコーディングを検出できます。
これはもちろんヒューリスティックに過ぎず、テキスト全体をスキャンする必要があります。
例: "英語のテキストは複数のエンコードで書くことができます"。この文は、例えばドイツ語のコードページを使用して書くことができる。 ASCIIには存在しない特殊文字(äなど)を追加しない限り、ほとんどの "西洋"エンコーディング(UTF-8を含む)と区別できません。
- 1. C++でのマルチバイト文字列のURLエンコーディング
- 2. マルチバイト文字エンコーディングをサポートするHTML to image/pdf converter
- 3. マルチバイト文字を検出する方法javascriptで終わる?
- 4. マルチバイト文字列のPHP intim
- 5. PHPとマルチバイト文字のヘルプ
- 6. 文字セットのエンコーディングを検出する方法は?
- 7. C/C++で文字列のエンコーディングを検出する
- 8. URLクエリ文字列エンコーディングを検出する
- 9. AssertionErrorのIDEA出力での文字エンコーディング
- 10. タイ文字の文字エンコーディング
- 11. エンコーディングの文字
- 12. Javaコンソールのマルチバイト文字表示
- 13. Eclipse文字エンコーディング
- 14. Python文字エンコーディング?
- 15. System.out文字エンコーディング
- 16. 文字エンコーディングは
- 17. URLエンコーディング "+"文字
- 18. ハスケル文字エンコーディング
- 19. Python文字エンコーディング
- 20. MariaDB文字エンコーディング
- 21. マルチバイト文字列の文字にアクセスするPHP
- 22. マルチバイト文字セットの改行制御文字
- 23. 名前変更は、マルチバイト文字を
- 24. マルチバイト文字セットとは何ですか?
- 25. 後方反復マルチバイト文字列 - C
- 26. テンプレートツールキットの文字エンコーディング
- 27. XMLの文字エンコーディング
- 28. 春の文字エンコーディング
- 29. ISO8583の文字エンコーディング
- 30. libcの文字エンコーディング?
ASCIIはありませんが、UTF-8のみがあります:-) – paxdiablo