asp.net處理Json資料時單引號與特殊字串的處理
http://www.bkjia.com/Asp_Netjc/452711.html
在asp教程.net的json處理中,通常會遇到使用單引號或其他特殊字元,如果直接使用,會截斷json資料,造成js錯誤無法正確執行。
其實只要使用網頁特效的escape方法編碼字串後就可以解決這個問題。
但是在c#程式碼中怎麼解決這個問題呢?
我們自然就想到了使用server.urlencode方法來編碼資料,可是實踐後發現編碼後的有些字元在js中無法被unescape方法還原。
我就用 .net 中的 server.urlencode 函式進行轉換。但是這樣仍然不行。試驗了很久也沒有找到原因。後來懷疑 asp.net教程中的server.urlencode函式和asp中的server.urlencode函式返回的值竟然不一樣。一實驗。竟然確實是。
試驗程式碼:
asp.net 中 如下程式碼? response.write(server.urlencode("彙編")); ?返回: %e6%b1%87%e7%bc%96
asp 中 如下程式碼 response.write server.urlencode("彙編")?? 返回: %bb%e3%b1%e0
產生這個問題的原因:asp.net 中的 server.urlencode 預設是按照 utf-8 編碼方式進行處理的。而asp中是按照本地設定編碼方式進行處理的。
如果你在 asp.net 下采用如下的編碼: asp 和 asp.net 的結果就會一樣:
response.write(httputility.urlencode("彙編",encoding.default));
採用:response.write(httputility.urlencode("彙編",encoding.utf8));? 返回的就是 response.write(server.urlencode("彙編"));?? 返回的結果
其實解決方法很簡單,引用microsoft.jscript程式集後,使用globalobject類的escape方法就行了。
這個方法作用和server.urlencode類似,但是它相當於是在c#程式碼裡呼叫了javascript的escape方法,自然而然可以保證能被unescape方法還原。
eg.
.cs中
1 microsoft.jscript.globalobject.escape(strjs);
.js中
var css教程tr = unescape(json.csstr);