2012-07-20 92 views
1

我的代碼是同上簡單:「無效字節1 1字節的UTF-8序列」 當讀取RSS饋送

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document doc = db.parse("http://blog.rogermontgomery.com/feed/?cat=skaffold"); 

的問題是,我有連接異常結束:

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence. 
    at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684) 
    at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:554) 
    at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742) 
    at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.arrangeCapacity(XMLEntityScanner.java:1619) 
    at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipString(XMLEntityScanner.java:1657) 
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:193) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) 
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:232) 
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284) 
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180) 
    at com.skaffold.service.RogerBlogReader.read(RogerBlogReader.java:33) 
[...] 

我不明白,XML標頭聲明文件爲UTF-8,HTTP響應編碼爲UTF-8 ... 任何解釋?

回答

2

並非所有的字節序列都是有效的UTF-8。 UTF-8解碼器可以讀取單個字節,並根據字節值知道它在UTF-8中是非法的。這聽起來像你有一個不好的RSS提要,也許是一個聲稱是UTF-8,但實際上編碼不同,如iso8859-1。

更新:提要URL是gzip壓縮的。你嘗試過解壓嗎?

+0

看看feed,我已經包含了鏈接。我看不到任何錯誤!這就是我的問題所在! – tibo 2012-07-20 01:05:46

+0

我已經更新了上面的答案。 – 2012-07-20 01:57:57

+0

哦!沒有意識到這個......這可能是答案。讓我檢查一下 – tibo 2012-07-20 02:16:29

相關問題