2

ここに私の問題があります: 入力として与えられた XML ファイルをアンマーシャリングするプログラムを書きましたが、私のプログラムは開発環境で問題なく動作することがわかりましたが、この同じプログラムはクライアントの環境で次の例外を生成します:

javax.xml.bind.UnmarshalException - リンクされた例外あり: [java.io.UTFDataFormatException: 2 バイト UTF-8 シーケンスのバイト 2 が無効です。]

私のプログラムへの入力として与えられた XML ファイルは、エンコーディング タイプとして UTF-8 を使用しています。Unmarshaller オブジェクトは、プロパティ値を設定していないため、デフォルトのエンコーディング タイプである UTF-8 を使用しています。その上、アンマーシャラーにスキーマを設定していないので、XML 検証を要求していません。

誰かがアイデアを持っていますか、または誰かがすでに同じ問題に遭遇しましたか?

前もって感謝します

4

1 に答える 1

0

私はすでにこのエラーを受け取りました。ISO-8859-1 エンコーディングを使用するように構成を変更しました: marshaller.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-1");

UTF-8 文字列を xml フローに入れることができます。エンコーディングが ISO-8859-1 のように定義されていなくても、正しくマーシャル/アンマーシャルされます。

于 2011-07-18T13:56:37.113 に答える