2012-02-23 5 views
4
<?xml version="1.0" encoding="UTF-16"?> 
    <note> 
     <from>Jani</from> 
     <to>ALOK</to> 
     <message>AshuTosh</message> 
    </note> 

私は、UTF-8エンコーディングのみをサポートするXMLパーサを持っています。それ以外の場合は、SAXパーサ例外が発生します。どのようにしてUTF-16をUTF-8に変換できますか?その場合UTF-16エンコーディング

+0

パーサーがUTF-18をサポートする可能性は100%です。パーサーの名前、バージョン、エラーメッセージを参考にしてください。 –

+0

@AaronDigullaは興味を示してくれてありがとうございます。私はJörnHorstmannによって提供された答えによって問題の解決策を得ています...とにかく、パーサーの名前はcom.sun.xml.fastinfoset.dom.DOMDocumentParserです –

+0

パーサーはUTF-16をサポートしています。ドキュメントが適切なUTF-16であり、正しいAPIを使用していることを100%確認してください。 –

答えて

5

そのあなたが使用しているXMLパーサーは、section 2.2 of the xml specificationを見ていない:

すべてのXMLプロセッサは、Unicode

のJava XMLのUTF-8とUTF-16エンコーディングを受け入れなければなりませんパーザは通常、入力をInputSourceオブジェクトでラップします。これは、指定された文字セットの文字デコードを行うReaderパラメータで構成できます。 「UTF-16」については

InputStream in = ... 
InputSource is = new InputSource(new InputStreamReader(in, "utf-16")); 

charsetそれは「UTF-16LE」または「UTF-16BE」のいずれかを使用する場合ではない場合は、ストリームは、バイト順マークで開始する必要があります。

+0

: - /パーサーは、XMLヘッダ(エンコーディングを含む)を読み、上記の規則を使用して文書を正しく処理する必要があります。誰かが別のエンコーディングを使って何かを送ると、XMLを読むときにエンコーディングを決して定義するべきではありません。 –

+0

バイトオーダーマークとは何ですか? – simgineer

関連する問題