随笔 - 100  文章 - 50  trackbacks - 0
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

我收藏的一些文章!

搜索

  •  

最新评论

阅读排行榜

评论排行榜

About Exception:
An invalid XML character (Unicode: 0xb) was found in the element content of the document.

原因:
从异常来看,很明显是因为字节数组中存在 Unicode: 0xb,而这个字节在Xml中被认为是非法字符。

对于一些经过编码或加、解密的字符串中,很容易会出现这个 0xb,
特别是在加、解密中,经常会涉及到字符填充,而填充物通常是 0xb,
需对于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 String  CheckUnicodeString(String value)
    {
     char xmlChar = value.toCharArray();
    for (int i=0; i < xmlChar.Length; ++i) {
        if (xmlChar[i] > 0xFFFD)
        {
            throw new Exception("Invalid Unicode");
           //或者直接替换掉0xb 
            xmlChar[i] =' ';// 用空格替换
        }
        else if (xmlChar[i] < 0x20 && xmlChar[i] != 't' & xmlChar[i] != 'n' & xmlChar[i] != 'r')
        {
            throw new Exception("Invalid Xml Characters");
           //或者直接替换掉0xb
            xmlChar[i] =' ' ;// 用空格替换
        }
       return new String( xmlChar );
    }

posted on 2010-08-06 18:23 fly 阅读(3800) 评论(0)  编辑  收藏 所属分类: java学习

只有注册用户登录后才能发表评论。


网站导航: