で始まる XML ファイルがあります<?xml version="1.0" encoding="iso-8859-2"?>
。私は次のように読みました。
SAXParserFactory.newInstance().newSAXParser().parse(is, handler);
ここis
で、 は InputStream でhandler
あり、任意のハンドラです。次に、この例外が発生します。
org.apache.harmony.xml.ExpatParser$ParseException: At line 41152, column 17: not well-formed (invalid token)
実際には、この位置に度記号があり、次のように CDATA で囲まれています。
<![CDATA[something °]]>
文字セット iso-8859-2 を使用すると、パーサーはこの文字を含むほぼすべての文字を受け入れる必要があります。そうではないようです。私は何を間違っていますか?
編集
私はこれをすべてAndroidで行っています。
奇妙なことに、パーサーはエンコーディング属性を完全に無視しているようです。ヘッダーをそのまま残してファイルを UTF-8 に変換したところ、プログラムでエラーなく読み取れるようになりました。何故ですか??
(私はこのように InputStream を作成しています: new BufferedInputStream(new FileInputStream(filename))
、つまりリーダーがないため、エラーになることはありません。)