在對(duì)數(shù)據(jù)庫(kù)取出來(lái)的數(shù)據(jù)(特別是描述信息)里面含有特殊字符的話(huà),使用JSON.parse將json字符串轉(zhuǎn)換成json對(duì)象的時(shí)候會(huì)出錯(cuò),主要是雙引號(hào),回車(chē)換行等影響明顯,左尖括號(hào)和右尖括號(hào)也會(huì)導(dǎo)致顯示問(wèn)題,所以要在輸出到頁(yè)面進(jìn)行json對(duì)象轉(zhuǎn)換之前將一些特殊符合進(jìn)行編碼或轉(zhuǎn)義,下面展示的是C#代碼編碼和轉(zhuǎn)義幾個(gè)常用特殊字符。經(jīng)過(guò)筆者測(cè)試,將這些符號(hào)編碼和轉(zhuǎn)義之后,大部分json字符串都可以轉(zhuǎn)換成json對(duì)象了。如果遇到個(gè)別問(wèn)題,應(yīng)朝著這個(gè)方向去查找問(wèn)題。
1
2
3
4
5
6
7
8
|
theString = theString.Replace( ">" , ">" ); theString = theString.Replace( "<" , "<" ); theString = theString.Replace( " " , " " ); theString = theString.Replace( "\"" , """ ); theString = theString.Replace( "\'" , "'" ); theString = theString.Replace( "\\" , "\\\\" ); //對(duì)斜線(xiàn)的轉(zhuǎn)義 theString = theString.Replace( "\n" , "\\n" ); theString = theString.Replace( "\r" , \\r); |
注意:\r是回到行首,\n是新啟一行,這兩個(gè)一般同時(shí)出現(xiàn),應(yīng)該同時(shí)處理。
補(bǔ)充:文字中間的換行,空格在數(shù)據(jù)庫(kù)里面不以\r\n, ;等形式顯示出來(lái)(“本書(shū)”與“前80”之間換行,“由”與“曹雪芹”之間空格)
文字:
數(shù)據(jù)庫(kù):