<?version = 1.0, encoding = UTF-8>
を使用してXMLファイルを解析しようとしていますが、エラーメッセージinvalid byte 2 of 2-byte UTF-8 sequence
に遭遇しました。誰がこの問題の原因を知っていますか?
最も一般的な原因は、_ISO-8859-x
_(Latin-x、Latin-1のような)を供給することですが、パーサーは_UTF-8
_を取得していると考えています。 Latin-1文字の特定のシーケンス(アクセントまたはウムラウト付きの2つの連続した文字)は、_UTF-8
_として無効なものを形成します。具体的には、最初のバイトに基づいて、2番目のバイトに予期しない高位ビットがあります。
これは、一部のプロセスがLatin-1を使用してXML
をダンプするときに簡単に発生しますが、XML
宣言の出力を忘れます(この場合、XML
パーサーは_UTF-8
_、XML
仕様に従って)、またはそうでない場合でも_UTF-8
_であると主張します。
ファイルが別の方法でエンコードされていても、パーサーがUTF-8に設定されているか、ファイルがUTF-8を使用していると宣言されていますが、実際にはエンコードされていません。
同じ問題がありました。私の問題は、jdomとFileWriter(xmlFile)で新しいXMLファイルを作成したことです。 FileWriterはUTF-8ファイルを作成できませんでした。代わりにFileOutputStream(xmlFile)を使用して解決しました。
String.getBytes()で使用されるデフォルトの文字エンコーディングをutf-8に変更してみてください。 VMオプション-Dfile.encoding = utf-8を使用します。
まだそのような間違いを犯している人のために。
uTF-8が使用されているため、ラテン文字などについてxmlドキュメントをチェックアウトしてください:私は同じ問題を抱えていたので、私はこれを持っていました:
<n:name>Åke Jógvan Øyvind</n:name>
お役に立てれば
.xmlファイルをJavaツールにインポートしようとしたときにも同じ問題が発生しました。これに適したソリューションが見つかりました。1. Notepad ++で.xmlファイルを開き、.xmlを保存します。ファイルを.rtfファイルとして保存してから、このファイルをワードパッドアプリケーションで開きます..rtfファイルを.txtファイルとして保存し、メモ帳で開いて、再度.xmlファイルとして保存します。ポップアップウィンドウで、[エンコード:UTF-8]オプションを選択してください。