我有一個XML文件,以<?xml version="1.0" encoding="iso-8859-2"?>
開頭。我讀了下面的方法:SAXException 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上。
奇怪:看起來解析器完全忽略了encoding屬性。我將文件轉換爲UTF-8,同時保留標題,現在我的程序可以正確讀取它。這是爲什麼??
(我正在InputStream的是這樣的:new BufferedInputStream(new FileInputStream(filename))
,即沒有一個閱讀器,使得不能錯誤)
您確定數據*實際上*正確編碼爲ISO-8859-2嗎? – 2013-03-18 15:46:32
根據[Wikipedia](https://en.wikipedia.org/wiki/ISO/IEC_8859-2),該字符在ISO-8859-2中被編碼爲B0。這是文件中該位置的實際字節嗎? – 2013-03-18 15:54:04
是的,我在Notepad ++中打開它,它說「ANSI編碼」,我有一個匈牙利語Windows,所以我敢肯定。 – szali 2013-03-18 15:54:10