from: http://gdutlzh.blog.163.com/blog/static/164746951201222934328455/
在XML文件中,如果內容包含一些特殊字符會導致XML文件無法解釋。
(1). 可以對特殊字符直接進行轉義
以下5個字符為需要進行轉義的字符
字符 | 轉義后 | 編碼 |
& | & | & |
' | ' | ' |
" | " | " |
> | > | > |
< | < | < |
(2). 將內容放至CDATA中
CDATA 以"<![CDATA[" 標記開始,以"]]>"標記結束
==============================================
以上兩種方法可以解決大部分的問題,網上資料還提到另外一類特殊字符,將相關的文章轉載一下
轉載自:http://www.jzxue.com/Html/XML/122115365011021.html
XML文檔中,一些特殊ASCII字符,顯示會有問題,如音樂符號,即使包含在< ! [CDATA[ ] ]中也不行,提示javascript錯誤:文本內容中發現無效字符。
注:本文中的特殊字符主要是指音樂符號等ASCII碼小於32的其中一些字符
2.參考文檔
1)網址:http://www.pcdog.com/p/html/20041215/151220044979_1.htm
這篇文章與本文要解決的特殊字符不是一類問題,僅供參考
3.最終解決方案
1)在網上找到一張ASCII字符表,這個表是解決問題的關鍵,地址如下:
http://www.51ajax.com/demo/ascii/ascii.htm
ASCII 碼大致可以分作三部分組成。
第一部分由 00H 到 1FH 共 32 個,一般用來通訊或作為控制之用,有些字符可顯示於屏幕,有些則無法顯示在屏幕上,但能看到其效果(例如換行字符、歸位字符)。
第二部分是由 20H 到 7FH 共 96 個,這 95 個字符是用來表示阿拉伯數字、英文字母大小寫和底線、括號等符號,都可以顯示在屏幕上。
第三部分由 80H 到 0FFH 共 128 個字符,一般稱為『擴充字符』,這 128 個擴充字符是由 IBM 制定的,並非標准的 ASCII 碼。這些字符是用來表示框線、音標和其它歐洲非英語系的字母。
2)具體方法
從第一部分的表中可以看到音樂符號的ASCII是14(十進制),產生問題的原因在於ASCII碼小於32的符號有些在屏幕上顯示時會有問題,解決的方法如下:
在提交入庫前用Javascript將ASCII碼小於32的字符用escape()函數編碼,然后入庫,如編碼后將變為%0E,其它字符不變,這樣在XML中顯示不會出現問題,當用Javascript對XML進行解析時,再用unescape()函數對內容進行解碼,這樣會將%0E顯示為。
我寫了一個Javascript函數(只適用於少量數據),可以實現對ASCII碼在32以下的字符進行編碼。