您的位置:首页 > 编程语言

请求参数时关于转义字符的处理

2017-03-14 17:28 369 查看
http://blog.csdn.net/wyzlwyzl/article/details/47746813

感谢上文,讲述了在C#中使用Microsoft.JScript.GlobalObject.escape方法和Microsoft.JScript.GlobalObject.encodeURIComponent的区别。

escape方法并不编码字符+。而我们知道,在用户提交的表单字段中,如果有空格,则会被转化为+字符,而服务器解析的时候则会认为+号代表空格。由于这个缺陷,escape方法并不能正确地处理所有的非ASCII字符,你应当尽量避免使用escape方法,取而代之,你最好选择encodeURIComponent()方法。

escape()不编码的字符:@*/+

相对于使用escape方法,使用encodeURI方法会显得更专业一些。当你需要编码一整个URI的时候,你可以使用此方法,因为URI中的合法字符都不会被编码转换。需要注意到是字符’也是URI中的合法字符,所以也不会被编码转换。

encodeURI() 不编码的字符: ~!@#@{content}*()=:/,;?+’

encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的。需要注意到是字符’也是URI中的合法字符,所以也不会被编码转换。

encodeURIComponent()不编码的字符: ~!*()’

服务器端解码:HttpUtility.UrlDecode,例如:

HttpUtility.UrlDecode(name_cn, Encoding.UTF8)

总结起来:

请求参数:encodeURIComponent

具体的区别还需要再实践中得到认识%>_<%
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  代码块