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

Java web开发乱码解决方案

2011-10-21 22:21 387 查看
乱码对于使用非英语程序员基本上是一直缠绕在身边的麻烦事,这个谁也避免不了。以下是我的一些解决乱码问题的方法或经验的汇总,欢迎指正或补充。

一、乱码发生的情况和应对措施

1.开发环境乱码

  由于Java默认使用UTF-8编码,而且网上很多人都建议Web开发的时候应尽量选用UTF-8做为默认编码,而非GBK。有时候或许会碰到这样的问题,成员A在他机器上看到的是正常的中文注释,你通过SVN下载到你机器上时,却发现注释全变成乱码了,这时候一定是你们的IDE的默认编码不同了。所以项目组成员在使用Eclipse等IDE的时候,应统一将default text editor改为UTF-8编码,免得日后后悔再改就惨了。

2.POST请求乱码
  适用于POST请求过程中, 在接收POST 提交的中文参数出现乱码的情况。解决方案可以使用SetCharacterEncodingFilter,这个很基础的一套过滤器,将所有来自页面的POST请求全部过滤为UTF-8编码。在web.xml文件中加入以下代码:

View Code

<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">


5.Ajax请求乱码
  使用Ajax,JS也是默认使用ISO8859编码,所以在进行请求时遇到中文参数需要进行编码,如:var url = "GetSelectListAction.do?queryData=subTrade" + "&queryId=" + encodeURI(obj.value) + "&r=" + Math.random();
  这里有两个地方需要注意:第一个地方是encodeURI(),方法,可以将参数进行转码,默认是转化为UTF-8,如果需要转为其他码制,需要在方法中添加第二个参数。
  第二个地方是Math.random(),由于Ajax有缓存机制,在接受请求的时候第一时间先判断该请求的地址是否被访问过,如果被访问过则 直接使用缓存中的内容返回,这个东西很讨厌,客户在访问过一次出错后以后每次出现的都是这个错误,所以在请求中给其增加一个时间戳,只要可以随机生成一个 不同的字串就可以,保证Ajax每次都去访问服务器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: