私たちのsaxparserは、ファイルの先頭に表示されるバイト順マークを無視しません
。
saxパーサーにバイト順マークを無視させるにはどうすればよいですか?
私たちのsaxparserは、ファイルの先頭に表示されるバイト順マークを無視しません
。
saxパーサーにバイト順マークを無視させるにはどうすればよいですか?
16進エディタでファイルを確認してください。
最初のバイトの後に実際\xEF\xBB\xBF
にドキュメント自体が続く場合、それはUTF-8の偽のBOMです。UTF-8 faux-BOMは不正であり、それらを生成するツールは特別なプログラミング酸で破棄する必要がありますが、XML仕様では、パーサーがこのバイトシーケンスを認識して無視する必要があるため、SAXパーサーが準拠していない場合は準拠していません。キックが必要です。
あなたに与えている最初のバイト
が実際に次のようなものである場合:
\xC3\xAF\xC2\xBB\xC2\xBF
\xEF\xBB\xBF\xC3\xAF\xC2\xBB\xC2\xBF
\xEF\x00\xBB\x00\xBF\x00
\xFF\xFE\xEF\x00\xBB\x00\xBF\x00
次に、偶発的なダブルエンコーディングが発生します。この場合、ファイルが整形式ではなく、SAXパーサーが正しく文句を言い、ファイル内の他のUnicode文字も混乱している可能性があるため、ファイルを生成するプログラムを確認する必要があります。おそらくそれは、ドキュメントをバイト文字列にシリアル化してから、偽のデコード/エンコードサイクルを介して送信するような愚かなことをしています。
いずれにせよ、パーサーに厄介なバイトシーケンスをスキップさせる必要がある場合は、このプレフィックスを削除するために手動でハッキングしたバージョンをパーサーにフィードする必要があります。SAXパーサーが何であるか(またはどの言語でさえ)を知らなければ、これを行う方法を言うのは困難です。
たぶん、パーサーに渡す前に入力ストリームを探すことができますか?たぶん、ファイルをバイト文字列に読み込んで、最初のバイトを切り取ったものをパーサーに渡すことができますか?パーサーがこれらのオプションを提供しない場合は、ファイルをバイト単位でロードし、先頭をクリップして、新しいファイルに再度保存する必要があります。
utf-16を予期しないsaxparserにutf-16入力を与えているようです。データをutf-8に変換してみてください。役立つ場合があります。