1. 程式人生 > >asp.net處理Json資料時單引號與特殊字串的處理

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);