ajax中文乱码问题

中文乱码问题一直是头疼我们在web开发当中的事情 笔者现在总结一下在web开发当中中文乱码的解决办法
办法1.在页面端 做一次encodeURL() 然后在应用服务器端做一次getByte() 转换
示例代码:
页面端发出 var url=encodeURL(document.getElementById("表单元素ID"));
服务端接收 String userName=new String(request.getParameter("参数名").getByte("iso8859-1","UTF-8"));
此方法适用于默认的应用服务器配置(大多数应用服务器内部都对接收过来的参数按照iso-8859-1进行编码),但是有的应用服务器配置被更改之后(tomcat,weblogic都可以在配置文件里面对接收参数编码进行修改) 就不使用了,因为这里写死了用iso-8859-1解码再用UTF-8编码.

方法2:(建议使用) 在页面端做两次encodeURL() 然后在应用服务器端做一次URLDecoder.decode() 就可以保证顺利解决中文乱码问题
笔者使用firefox的 debug跟踪了一个"中"字的详细转换过程如下
var userName=document.getElementById("userName");
这句之后 userName 得到"中"字,
经过一次encodeURL(userName)之后得到一个字符串"%E4%B8%AD"(即一次UTF-8编码将"中"字转换为包含三个字节的字节数组E4B8Ad,每个字节对应一个16进制的表示)

再做一次encodeURL(encodeURL(userName))之后得到一个字符串"%25E4%25B8%25AD"
实际是将第一次前面的%转换为25
之后在服务端 尚未人工转换之前 即经过应用服务器内部之后变成"%E4%B8%AD",因为我们传过来的是"%25E4%25B8%25AD" 都是英文的字符,所以不管应用服务器内部使用怎样的解码解出来都是"%E4%B8%AD",所以我们再进行一次String userName=URLDecoder.decode(request.getParameter("userName"),"UTF-8") 得到的userName就为"中"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值