質問

私たちのsaxparserは、バイトオーダーマークを無視しません ファイルの開始時に表示されます。

サックスパーサーにバイトオーダーマークを無視させるにはどうすればよいですか?

役に立ちましたか?

解決

UTF-16を期待していないSaxParserにUTF-16入力を与えているようです。データをUTF-8に変換してみてください。

他のヒント

HEXエディターのファイルを確認してください。

最初のバイトが実際にある場合 \xEF\xBB\xBF ドキュメント自体が続いて、それはUTF-8フェイクボムです。 UTF-8フェイクボムは、特別なプログラミング酸で破壊する必要がありますが、XML Specはそうする必要がありますが、それらを生成するツールですが 必要とする このバイトシーケンスを認識して無視するパーサーなので、サックスパーサーが準拠していない場合は、コンプライアンスがなく、キックが必要です。

あなたに与えている最初のバイトがあれば  実際には次のようなものです:

\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

それから、あなたが持っているのは偶発的な二重エンコードです。この場合、ファイルを生成するプログラムを調べる必要があります。これは、よく形成されていないため、サックスパーサーは文句を言うのが正しいので、ファイル内の他のUnicode文字もおそらく台無しになります。おそらく、ドキュメントをバイト文字列にシリアル化するような愚かなことをしてから、偽のデコード/エンコードサイクルを介して送信します。

いずれにせよ、パーサーに面倒なバイトシーケンスをスキップする必要がある場合は、このプレフィックスを削除するために手動でハッキングしたバージョンをフィードする必要があります。 Sax Parserが何であるか(または言語でさえ)を知らなければ、これを行う方法を言うのは難しいです。

たぶん、あなたはそれをパーサーに渡す前に入力ストリームを探すことができますか?ファイルをバイト文字列に読み取り、それを最初のバイトのshorn、パーサーに渡すことができますか?パーサーがこれらのオプションを提供しない場合は、ファイルをバイトとしてロードする必要があります。開始をクリップして、新しいファイルに再度削除する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top