關於 Exception:Xml中的非法字元
http://www.blogjava.net/fingki/archive/2008/09/04/226969.html
About Exception:
An invalid XML character (Unicode: 0x0) was found in the element content of the document.
問題描述:
當我們用
byte[] info ;
DocumentHelper.parseText(new String(info));
將一個位元組陣列轉成字串再轉成Document(XML格式)時,常常會遇到上述異常。
特別是當字串有加、解密,或編碼等情況時。
原因:
從異常來看,很明顯是因為位元組陣列中存在 Unicode: 0x0,而這個位元組在Xml中被認為是非法字元。
對於一些經過編碼或加、解密的字串中,很容易會出現這個 0x0,
特別是在加、解密中,經常會涉及到字元填充,而填充物通常是 0x0,
需對於0x00-0x20 都會引起一定的問題,又因為這些字元不可見,因此用通常的編輯器進行編輯的時候找不到問題所在。
而在轉成String後也覺察不到任何異常。
所以在轉成XML格式時要對字串進行檢測:
* Verify that no character has a hex value greater than 0xFFFD, or less than 0x20.
* Check that the character is not equal to the tab ("t), the newline
("n), the carriage return ("r), or is an invalid XML character below
the range of 0x20. If any of these characters occur, an exception is
thrown.
pubic void CheckUnicodeString(String value)
{
for (int i=0; i < value.Length; ++i) {
if (value[i] > 0xFFFD)
{
throw new Exception("Invalid Unicode");//或者直接替換掉0x0 value[i]='"n';
}
else if (value[i] < 0x20 && value[i] != '"t' & value[i] != '"n' & value[i] != '"r')
{
throw new Exception("Invalid Xml Characters");//或者直接替換掉0x0 value[i]='"n';
}
}
相關資源:
http://msdn.microsoft.com/en-us/library/k1y7hyy9.aspx
http://gceclub.sun.com.cn/developer/technicalArticles/Intl/Supplementary/index_zh_CN.html
以下是我在java中的測試程式:
相關文章
- XML學習筆記(一):關於字元編碼的理解XML筆記字元
- Servlet中關於web.xml的測試ServletWebXML
- 關於xml解析XML
- banq:關於XML的學習XML
- 關於web.xmlWebXML
- 關於字元編碼字元
- 關於SQLServer中的字元儲存的問題的測試SQLServer字元
- java web中關於修改xml後讀取值的問題JavaWebXML
- 關於字串中取相同的字元問題(小學題)字串字元
- 關於直方圖中關於字元型別的ENDPOINT_VALUE欄位的轉換直方圖字元型別
- 關於Java Web工程中web.xml檔案JavaWebXML
- 能夠判斷非法字元的正規表示式字元
- 關於castor的xml mappingASTXMLAPP
- 關於sqlite的特殊字元轉義SQLite字元
- 關於過濾字元的問題字元
- 關於SQL Server中的字元儲存的問題的測試SQLServer字元
- 關於 Android studio 在xml中不提示的問題AndroidXML
- 關於 Mybatis mapping.xml中的 StatementType 知識點MyBatisAPPXML
- 關於【s】和[t]字元字元
- 關於Oracle字元亂碼?Oracle字元
- 關於XML字串和XML Document之間的轉換薦XML字串
- 關於 Struts 1.1 Exception Handler 的應用補充 (轉)Exception
- 關於 Spartacus 的 sitemap.xml 問題XML
- web.xml中的servlet相關WebXMLServlet
- 關於Oracle字元型別的比較Oracle字元型別
- 關於JS裡的字元表情亂碼JS字元
- 檢測字串中是否含有非法危險字元正規表示式程式碼字串字元
- 關於java中String字元轉碼的幾個小測試Java字元
- Oracle 中的exception——(Raise)OracleExceptionAI
- 關於 Pentaho 的配置檔案 pentaho.xmlXML
- 關於.NET Framework提供的XML檔案格式FrameworkXML
- 關於SAX解析xml檔案的問題XML
- 關於WEB.XML的問題,請進WebXML
- 關於XML序列化的簡單例子XML單例
- 【求助】關於xml-rpc的問題XMLRPC
- 關於jstl的xml操作中的select路徑表示式問題。JSXML
- 非法修改系統中的程式
- Java - XML字元支援報錯An invalid XML characterJavaXML字元