Java乱码处理


  在java web开发过程中,时常会遇到这样或那样的中文乱码现象。以下是常见的几种乱码现象和解决方法:

 

1、  提交表单到服务端出现乱码

 

  原因1、页面和服务端的编码不一致,只需将页面和服务端编码设为一致即可,页面(jsp/html)在信息头加上支持中文的编码

  原因2、页面和服务端编码一致,此时就可能是由于采用的框架的编码与程序的编码不一致,将requestresponse的编码设置为UTF-8/GBK即可

 

2、  ajax传参乱码

 

js编码使用utf-8,而服务端获取则用gbk解码,则会出现乱码,解码的范围不能小于编码的范围。

而有时使用 new String (“参数”.getBytes(“GBK”),”UTF-8”),来还原字符,但是编码的界限,结果还是可能会有乱码。最好的方式就是将中文参数用encodeURIComponent编码两次,第一次是标准编码,第二次就是编码为ascii,所有的编码方式都是基于ascii而扩展的,所以以ascii传输就不会乱码。后台接收的时候decode一次就可以了,因为容器会解码一次。这也是web应用在windows下是正常的,在linux下确实乱码的,因为容器默认采用系统的编码解码一次,windows下一般为gbk/gb2312,对中文有良好的支持,而linux下为ascii,当然就会出现乱码。解决的办法第一种就是中文编码两次用ascii传输,还有一种就是修改容器的默认编码。(注意:千万不要相信一些SpringURLEncodingFilter,这些没用的,因为取数据的时候是容器的编码先起作用,除非你自己实现HttpServletRequest

 

3、  不会乱码的编码方式

    项目所有文件都使用unicode编码,则可以支持所有的语言,而不会乱码,unicode3个实施标准, UTF-8 UTF-16 USC-2。其中UTF-8 因为其编码特性得到的广泛支持,UTF-8编码已经成功国际化标准编码。如果你正在搞一个新的项目请别犹豫,前台后台数据库一律UTF-8 编码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值