posts - 72, comments - 66, trackbacks - 0, articles - 0
          About Exception:
          An invalid XML character (Unicode: 0x0) was found in the element content of the document.

          問題描述:
          當我們用
          byte[] info ;
          DocumentHelper.parseText(new String(info));
          將一個字節(jié)數(shù)組轉(zhuǎn)成字符串再轉(zhuǎn)成Document(XML格式)時,常常會遇到上述異常。
          特別是當字符串有加、解密,或編碼等情況時。

          原因:
          從異常來看,很明顯是因為字節(jié)數(shù)組中存在 Unicode: 0x0,而這個字節(jié)在Xml中被認為是非法字符。

          對于一些經(jīng)過編碼或加、解密的字符串中,很容易會出現(xiàn)這個 0x0,
          特別是在加、解密中,經(jīng)常會涉及到字符填充,而填充物通常是 0x0,
          需對于0x00-0x20 都會引起一定的問題,又因為這些字符不可見,因此用通常的編輯器進行編輯的時候找不到問題所在。
          而在轉(zhuǎn)成String后也覺察不到任何異常。
          所以在轉(zhuǎn)成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';
                  }
              }

          相關(guān)資源:
          http://msdn.microsoft.com/en-us/library/k1y7hyy9.aspx
          http://gceclub.sun.com.cn/developer/technicalArticles/Intl/Supplementary/index_zh_CN.html

          主站蜘蛛池模板: 竹北市| 大城县| 麦盖提县| 榆中县| 新津县| 台山市| 龙岩市| 东丽区| 桓台县| 惠水县| 邢台县| 武安市| 正宁县| 阜阳市| 无棣县| 寿光市| 朝阳县| 闽清县| 东丽区| 泸西县| 年辖:市辖区| 西昌市| 浮梁县| 文水县| 德保县| 武川县| 阳信县| 武汉市| 高清| 盐城市| 察雅县| 乌审旗| 昭平县| 巍山| 达拉特旗| 义乌市| 泰和县| 当涂县| 英山县| 资兴市| 阳东县|