參考資料:(4個(gè)都是好資料)

Dom4j 編碼問題徹底解決 作者:lonsen
http://www.5inet.net/Develop/Java/036579,Dom4j_BianMaWenDiCheDeJieJue.aspx

“中文問題沒商量”之Dom4j中的編碼問題
作者: 盛忠良?
http://blog.lupaworld.com/blog/htm/do_showone/tid_2261.html

JAVA編碼問題的一些理解
http://www.jspcn.net/htmlnews/11049393353751902.html

用dom4j解析中文字符時(shí),出現(xiàn)org.dom4j.DocumentException: Invalid byte 1 of 1-byte UTF-8 sequence.各位幫小弟看看
http://dev.9983.com/ku/5403/4683267.asp

自己的總結(jié):
1、“org.dom4j.DocumentException: Invalid byte 1 of 1-byte UTF-8 sequence.”異常分析和解決:
分析:
該異常由下面的reader.read(file);語句拋出:
SAXReader reader = new SAXReader();
Document doc = reader.read(file);

產(chǎn)生這個(gè)異常的原因是:
所讀的xml文件實(shí)際是GBK或者其他編碼的,而xml內(nèi)容中卻用<?xml version="1.0" encoding="utf-8"?>指定編碼為utf-8,所以就報(bào)異常了!

注釋:參考網(wǎng)上的《Java/J2EE中文問題終極解決之道》一文,編碼問題原因應(yīng)該是:操作系統(tǒng)編碼為GBK,而xml指定為utf-8,SAXReader使用系統(tǒng)的默認(rèn)編碼GBK,所以存在需要轉(zhuǎn)換編碼的問題,也就自然會(huì)出現(xiàn)亂碼了!解決:讓文件編碼和java 操作該文件的接口的編碼一致;

解決:
情況一:該xml文件由dom4j生成;

解決方法:用 org.dom4j.io.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter(
??????????????????? new FileOutputStream(fileName));
代替
?xmlWriter = new XMLWriter(new FileWriter(fileName));
,指定編碼為utf-8生成xml文件;

詳細(xì)參考資料1:
Dom4j 編碼問題徹底解決 作者:lonsen
http://www.5inet.net/Develop/Java/036579,Dom4j_BianMaWenDiCheDeJieJue.aspx

情況二:解析從jsp頁面中讀取到的用戶輸入的xml描述內(nèi)容時(shí),reader.read()拋出異常;

解決方法:
調(diào)用read前先把xml內(nèi)容轉(zhuǎn)為utf-8編碼:(使用支持編碼格式的函數(shù))

? public void validate(FacesContext context, UIComponent component,? Object obj)?
???? throws ValidatorException {?
??
??????????? String xmldescription = (String) obj; ?
???? byte[] bytes =xmldescription.getBytes();?
??????????? RelationXmlParser.isXmlOK("E:\\jiangcm\\templateXMLSchema.xsd",bytes);??
???? ……
??? }

?public static boolean isXmlOK(String xsdFile, byte[] tagetXml) throws SAXException,????????????????? IOException, DocumentException
?{
??SAXReader reader = new SAXReader();
??????????????? ……
??InputStream in = new ByteArrayInputStream(tagetXml);
??InputStreamReader utf8In=new InputStreamReader(in,"utf-8");
??????????????? ……
??????? }


?