Ajax请求中文乱码解决方案
2014-12-11 20:08
204 查看
Ajax请求路径中如果有中文出现在参数值中时,在IE浏览器中(目前我测过IE7、8、9,其它浏览器谷歌、火狐、360极速<非兼>没问题)都出现过乱码的情况,遇到这种问题那肯定就是编码的问题,这时我们就必须采用编码后再传参了,在后台接收时就必须进行解码操作,在js中进行编码操作有几个常用的方法escape()、encodeURI()、encodeURIComponent()。
1.escape():一般是对数据进行编码,常用在请求界面和接收界面的编码格式相同的情况下
2.encodeURI():对URL的整体编码,但不会对 ":"、"/"、";" 和 "?"字符编码,例如:encodeURI("http://www.xxxx.com?city='长沙'")
3.encodeURIComponent():由于该方法对所有字符都会编码,所以经常处理对url进行完全编码的操作,这样组合url就不会被特殊字符分隔了,例如把某个url当参数进行传递时,就可以使用该方法了 →http://www.xxxx.com?urlstr= ' + encodeURIComponent("http://www.yyyy.com") + '
在这我们就使用encodeURI()方法对url进行编码操作,使用该方法进行一次编码,传到后台无需解码,好像也不会出乱码,但我一般喜欢做两次编码encodeURI(encodeURI("http://www.xxxx.com?city='长沙'")),因为浏览器进行请求发送时,会自动做一次解码操作,这样我们再做一次编码,就无需管浏览器的默认的编码方式了,传到后台再做一次解码操作就可以了,后台解码可以使用(C#)
System.Web.HttpUtility.UrlDecode(str,Encoding.GetEncoding("utf-8")) 进行解码
1.escape():一般是对数据进行编码,常用在请求界面和接收界面的编码格式相同的情况下
2.encodeURI():对URL的整体编码,但不会对 ":"、"/"、";" 和 "?"字符编码,例如:encodeURI("http://www.xxxx.com?city='长沙'")
3.encodeURIComponent():由于该方法对所有字符都会编码,所以经常处理对url进行完全编码的操作,这样组合url就不会被特殊字符分隔了,例如把某个url当参数进行传递时,就可以使用该方法了 →http://www.xxxx.com?urlstr= ' + encodeURIComponent("http://www.yyyy.com") + '
在这我们就使用encodeURI()方法对url进行编码操作,使用该方法进行一次编码,传到后台无需解码,好像也不会出乱码,但我一般喜欢做两次编码encodeURI(encodeURI("http://www.xxxx.com?city='长沙'")),因为浏览器进行请求发送时,会自动做一次解码操作,这样我们再做一次编码,就无需管浏览器的默认的编码方式了,传到后台再做一次解码操作就可以了,后台解码可以使用(C#)
System.Web.HttpUtility.UrlDecode(str,Encoding.GetEncoding("utf-8")) 进行解码
相关文章推荐
- SpringMVC Ajax请求时返回json中文字符串的乱码问题的解决方案
- 关于Ajax请求中传输中文乱码问题的解决方案
- Ajax Post请求中文乱码问题解决方案
- AJAX传输数据的中文乱码之完全解决方案
- ajax请求,中文乱码
- AJAX中文乱码的几种后台的解决方案
- 最通用的Ajax中文乱码解决方案。
- Ajax请求缓存问题、中文乱码问题、跨域问题
- extjs及ajax中文乱码问题及解决方案(基本通用)
- ajax中文乱码原因分析及解决方案
- Ajax 异步请求 包含中文时乱码处理
- ajax中文乱码原因分析及解决方案
- Ajax中的中文乱码问题的解决方案
- 用ajax提交表单时中文乱码解决方案 推荐
- Ajax中文乱码问题解决方案
- Ajax中文乱码问题解决方案(servlet)
- ajax 文本框输入提示中文乱码问题解决方案
- Ajax中文参数乱码解决方案
- Ajax中文乱码问题解决方案(servlet)
- Ajax中文乱码问题解决方案