6

ヘブライ語の文字を含むXMLファイルを解析しようとしています。ヘブライ語の文字を使用せずに(別のソフトウェアから)ファイルを出力すると、正常に解析されるため、ファイルが正しいことはわかっています。

多くのことを試しましたが、常にこのエラーが発生します

MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.

私の最近の試みは、エンコーディングを使用してそれを開きFileInputStream、エンコーディングを指定することでした

DocumentBuilder db = dbf.newDocumentBuilder();
document = db.parse(new FileInputStream(new File(xmlFileName)), "Cp1252");

Cp1252別のアプリで機能したエンコーディングです)しかし、同じ結果が得られました。

ByteArray同様に使用してみましたが、何も機能しませんでした。

助言がありますか?

4

2 に答える 2

7

ファイルの正しいエンコーディングがわかっていて、それが「utf-8」でない場合は、それを xml ヘッダーに追加できます。

<?xml version="1.0" encoding="[correct encoding here]" ?>

またはリーダーとして解析します。

db.parse(new InputStreamReader(new FileInputStream(new File(xmlFileName)), "[correct encoding here]"));
于 2012-12-14T15:28:25.133 に答える
1

解決策は非常に単純で、コンテンツを UTF-8 形式で取得し、SAX 入力ソースをオーバーライドします。

File file = new File("c:\\file-utf.xml");
InputStream inputStream= new FileInputStream(file);
Reader reader = new InputStreamReader(inputStream,"UTF-8");

InputSource is = new InputSource(reader);
// is.setEncoding("UTF-8"); -> This line causes error! Content is not allowed in prolog

saxParser.parse(is, handler);

ここで完全な例を読むことができます – http://www.mkyong.com/java/how-to-read-utf-8-xml-file-in-java-sax-parser/

于 2015-08-17T06:11:04.160 に答える