推薦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版本就有。