JS與C#(.net)編碼與解碼

推薦C#程序員,在ASP.NET中使用 Microsoft.JScript.GlobalObject.encodeURIComponent("!@#$&*()=:/;?+'中 文");編碼

而不要使用Server.UrlEncode("!@#$&*()=:/;?+'中 文");

 

在客戶端用js方法decodeURIComponent()來解析;將不會出現"!@#$&*()=:/;?+'中 文"等符號不能解析的問題;

 

對於服務器語言Server.UrlEncode("!@#$&*()=:/;?+'中 文");得到的結果:"!%40%23%24%26*()%3d%3a%2f%3b%3f%2b'%e4%b8%ad+%e6%96%87"

對於客戶端js腳本:"!%40%23%24%26*()%3d%3a%2f%3b%3f%2b'%e4%b8%ad+%e6%96%87"使用3種方法解析得到的結果:

 

unescape("!%40%23%24%26*()%3d%3a%2f%3b%3f%2b'%e4%b8%ad+%e6%96%87"):"!@#$&*()=:/;?+'中+文"

decodeURI("!%40%23%24%26*()%3d%3a%2f%3b%3f%2b'%e4%b8%ad+%e6%96%87"):"!%40%23%24%26*()%3d%3a%2f%3b%3f%2b'中+文"

decodeURIComponent("!%40%23%24%26*()%3d%3a%2f%3b%3f%2b'%e4%b8%ad+%e6%96%87"):"!@#$&*()=:/;?+'中+文"//這個最靠譜,但是空格依然被翻譯成+號,如果真要偷懶,則在客戶端把"+"轉換爲"%20" 然後再使用decodeURIComponent()進行解碼

 

---------------------------------------------------------------------------------------------------------------------------------------------

Microsoft.JScript.GlobalObject.encodeURIComponent("!@#$&*()=:/;?+'中 文");得到的結果:

"!%40%23%24%26*()%3D%3A%2F%3B%3F%2B'%E4%B8%AD%20%E6%96%87"

 

 

unescape("!%40%23%24%26*()%3D%3A%2F%3B%3F%2B'%E4%B8%AD%20%E6%96%87"):

"!@#$&*()=:/;?+'中 文"

decodeURI("!%40%23%24%26*()%3D%3A%2F%3B%3F%2B'%E4%B8%AD%20%E6%96%87"):

"!%40%23%24%26*()%3D%3A%2F%3B%3F%2B'中 文"

decodeURIComponent("!%40%23%24%26*()%3D%3A%2F%3B%3F%2B'%E4%B8%AD%20%E6%96%87"):

"!@#$&*()=:/;?+'中 文"

 

Microsoft.JScript.GlobalObject 中包含了js中的一些方法屬性 跟客戶端js中的功能效果完全一樣 所以得到的結果也完全一樣

*需要引用Microsoft.JScript.Dll纔可以使用

 

以下引用自網絡:

 

javascript中存在幾種對URL字符串進行編碼(的)方法:escape(),encodeURI(),以及encodeURIComponent()。

這幾種編碼所起(的)作用各不相同。
escape()/unescape() 方法:
採用ISO Latin字符集對指定(的)字符串進行編碼。所有(的)空格符、標點符號、特殊字符以及其他們非ASCII字符都將被轉化成%xx格式(的)字符編碼(xx等於該字符在字符集表裏面(的)編碼(的)16進制數字)。比如,空格符對應(的)編碼是%20。
不會被此方法編碼(的)字符: @ * / +
encodeURI() /decodeURI()方法:
把URI字符串採用UTF-8編碼格式轉化成escape格式(的)字符串。
不會被此方法編碼(的)字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent() /decodeURIComponent方法:
把URI字符串採用UTF-8編碼格式轉化成escape格式(的)字符串。與encodeURI()相比,這個方法將對更多(的)字符進行編碼,比如 / 等字符。所以如果字符串裏面包含了URI(的)幾個部分(的)話,不能用這個方法來進行編碼,否則 / 字符被編碼之後URL將顯示錯誤。
不會被此方法編碼(的)字符:! * ( ) '
因此,對於中文字符串來說,如果不希望把字符串編碼格式轉化成UTF-8格式(的)(比如原頁面和目標頁面(的)charset是一致(的)時候),只需要使用 escape。如果你們(的)頁面是GB2312或者其他們(的)編碼,而接受參數(的)頁面是UTF-8編碼(的),就要採用encodeURI或者 encodeURIComponent。
另外,encodeURI/encodeURIComponent是在javascript1.5之後引進(的),escape則在javascript1.0版本就有。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章