2010-11-19 15 views
2

私はエンコーディングに関する問題に直面しています。javaでエンコーディングをチェックする方法は?

たとえば、XML形式のエンコーディング( "UTF-8")のメッセージがあります。

<message> 
     <product_name>apple</product_name> 
     <price>1.3</price> 
     <product_name>orange</product_name> 
     <price>1.2</price> 
     ....... 
    </message> 

さて、このメッセージは複数の言語をサポートしている:

  • 繁体字中国語(BIG5)、
  • 簡体中国語(GB)、
  • 英語(UTF-8)

    そして、特定のフィールドのエンコーディングのみを変更します。例えば
    (繁体字)、

    蘋果 1.3橙 1.2 .......

    のみ "蘋果" および "橙" BIG5、"<product_name>""</product_name>"を使用しているされていますまだutf-8を使用しています。
    <price>1.3</price>および<price>1.2</price>はutf-8を使用しています。

どのような単語が異なるエンコーディングを使用しているかはどのようにわかりますか?

答えて

2

XMLを提供している人は間違ったXMLを提供しているようです。一貫したエンコーディングを使用する必要があります。

http://sourceforge.net/projects/jchardet/files/は、かなり優れたヒューリスティック文字セット検出器です。 これは、コンテンツタイプまたはBOMに文字セットがないページのエンコーディングを検出するためにFirefoxで使用されるポートです。

プロバイダに出力を修正させることができない場合は、誤ったXMLファイルの部分文字列のエンコーディングを試してみることができます。

1

1つのXMLファイルで1つのエンコーディングしか使用しないでください。 big5の文字のUTF_8エンコーディングに対応するものがあります。

0

私はプロバイダに出力を修正させることができないので、私はそれを自分で処理する必要があり、このプロジェクトでは拡張ライブラリを使用できません。ディスプレイの前に私はこのようなことを解決することができ

String str = new String(big5String.getByte("UTF-8")); 

メッセージ。

+0

これは良い解決策ではありませんが、私は問題を解決するためにこの方法を知っています。 誰かに他のより良い解決策がありますか? – Roy

関連する問題