Tomcat6服务器编码为引用其他人的内容连接地址为:http://guozheng.iteye.com/blog/681207
偶然遇到这个问题,utf-8编码格式用tomcat-6.0.18部署之后页面显示全是乱码。
解决方法:
配置tomcat的server.xml 在下面两个地方加:URIEncoding="UTF-8"
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443"
URIEncoding="UTF-8" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
URIEncoding="UTF-8"/>
如果还是不行,可以在上面修改的基础上 从 tomcat 的自带项目 Examples是里的---\webapps\examples\WEB-INF\classes\filters
下找到 RequestDumperFilter.java 和 SetCharacterEncodingFilter.java,
加入到工程文件中去。
并把这个tomcat带的编码过滤器配置到web.xml里
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>xxx.xxx.xxx.SetCharacterEncodingFilter</filter-class>
<!--类路径-->
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Ajax中文乱码问题
在页面中用如下方式解决:
var reportTmpId = $("#reportTmpId").val();
var attrKey = encodeURI(encodeURI($("#attrKey").val()));
$.post("${ctp}/ms/report/validateKeyRepTmpAttr.action?reportTmpId="+reportTmpId+"&attrKey="+attrKey,null,function(flag){
if(flag=="false"){
document.all("keyMsg").style.color="green";
document.all("keyMsg").innerHTML="可以使用";
}else{
document.all("keyMsg").style.color="red";
document.all("keyMsg").innerHTML="名字重复!";
}
});
在Action类中:
public String validateName(){
logger.debug("进入ReportTemplateAction的validateName方法!");
String reportName = null;
try{
reportName = URLDecoder.decode(request.getParameter("reportName"),"utf-8");
if(reportName != null && !"".equals(reportName)){
TReportTemplate tmp = this.reportTemplateMngImpl.validateName(reportName);
if(tmp == null){
response.getWriter().print("false");
}else{
response.getWriter().print("true");
}
}
}catch(Exception e){
e.printStackTrace();
logger.error("执行ReportTemplateAction的validateName方法出现异常!"+e.getMessage());
}
return null;
}