javaScript encodeURI 中文乱码(转)

1.将字符串转码new String(“xxxxx”.getBytes("iso-8859-1"),"utf-8") 这种转码方式有很大的弊端因为它是使用指定的字符集将此 String 编码为 byte 序列并将结果存储到一个新的 byte 数组中然后通过使用指定的字符编码将生成的byte 数组解码构造一个新的String字符串。这种情况就有可能遇到的情况是不能将一个汉字全部解码完。这样前边的都能正常显示但是最后一个字可能是乱码。所以不建议使用这种方式。 


2.在传参前转码接收参数后再转码回来。 这种方式有两种

第一种传参前使用java.net.URLEncoder.encode("xxxx",“utf-8")将中文转为16进制字符。接收参数后使用java.net.URLDncoder.decode("xxxx",“utf-8")将16进制字符转为中文。这种方式需要注意的是在使用encode转码后会出现特殊字符这时候就需要将特殊字符替换为相应的16进制。因为特殊字符在url路径中做为参数传递时也是乱码。 
第二种   传参前encodeURI(“xxxx”) 。接收参数后使用java.net.URLDncoder.decode("xxxx",“utf-8")将16进制字符转为中文。这种方式需要注意的是在使用encodeURI转码后会出现特殊字符这时候就需要将特殊字符也转码,所以使用两次encodeURI即 encodeURIencodeURI“xxxx”。 
 
此种方法windows和linux有一定区别 Windows上传值前使用encodeURI("xxxx"),在后台直接取值不需任何转换(比如java后台直接使用request.getParameter("xxxx")取值)便能接收到前台传过来的中文 Linux上传值前必须使用encodeURIencodeURI“xxxx”必须使用两次转码在后台接收到的值经过两次转码必须使用java.net.URLDncoder.decode("xxxx",“utf-8")将16进制字符转为中文。Linux上的这种方法在windows也可以使用。建议windows上也使用此方法变可以直接在windows和linux兼容。 
这两种转码方式是很好用的所以很建议大家使用。 


3.修改tomcat配置文件在Tomcat的安装目录下conf文件夹中的server.xml文件将配置访问端口的地方加上URIEncoding=“utf8"即可。这是解决乱码的几种方法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值