2011-06-29 6 views
1

私は、utf-8yのエンコーディングを持つxmlファイルを解析するためにsaxパーサーを使用しています。サックスパーサーや入力ソースでどのように指定できますか?私はいつも解析例外を受け取りますJavaでUTF-8Yとしてバイトを取得する方法

+0

複製:http://stackoverflow.com/questions/5353783/why-org-apache-xerces-parsers-saxparser-does-not-skip-bom-in-utf8-encoded-xml – leonbloy

答えて

1

あなたはInputStream経由でファイルを読んでいると思いますか?パーサーは、XMLヘッダーからファイルの種類を判断できる必要があります。ファイルを文字列に読み込んだ後、それがひな形になる傾向があると解釈した場合

+0

ヘッダーにはエンコードがありますこれは正しくない – Pan

+1

申し訳ありませんが、ファイルのヘッダーにBOMマーカーがありますか?その場合、いくつかの回避策が文書化されています。 http://webcache.googleusercontent.com/search?q=cache:5JOKO1VNetQJ:bugs.sun.com/bugdatabase/view_bug.do%3Fbug_id%3D6206835+saxparser+utf-8+BOM&cd=1&hl=en&ct=clnk&source=www。 google.comファイルのXMLヘッダーにファイルの内容が間違っている場合は、BufferedInputStreamを使用してコンテンツをパーザに渡しながら書き直すことができます – Petesh

0

XML文書の 'encoding'値に 'Y'が含まれていることを確認してください。それで、私はあなたがエラーを受け取ったのに驚くことはありません。そのようなエンコーディングはありません。 これはドキュメントを作成したときにこれがエラーであると思われ、修正する必要があります。

  1. 「UTF-8」
  2. は、その「Y」を削除するために解析する前に、入力文書を修正エンコーディングとして渡して、入力ストリームからにInputStreamReaderを自分で構築:

    しかし、あなたの側に

    、次の2つの主要なオプションを持っていますそこから

最初のアプローチは簡単で、ほとんどのパーサーはそれで大丈夫です。最初に動作しない場合は、2番目のオプションを使用できます。

関連する問題