先设置eclipse中为utf-8编码格式,
Window->Preferences->General->Workspace 面板Text file encoding 选择UTF-8
Window->Preferences->General ->Content Types->Text->JSP 最下面设置为UTF-8
Window->Preferences->Web->JSP Files 面板选择 ISO 10646/Unicode(UTF-8)
然后在代码中设置正常编码需要的三个步骤
1,Jsp页面在页面第一行的java代码中配置pageEncoding
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
%>
2,Jsp页面在html代码中配置charset
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body ng-view="ng-view">
</body>
</html>
3,web.xml配置编码过滤器(java web 项目的一个重要的配置文件,Sun公司定义)
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置完成之后搜索依然乱码
从代码找问题,搜索是由一个form表单发送到控制层
设置form的编码格式
<form class=""
method="post"
action="<%=basePath%>goods/search"
enctype="multipart/form-data"
accept-charset="UTF-8">
</form>
发现依然没有解决,只能去修改tomcat编码格式
利用request.setCharacterEncoding(“UTF-8”);来设置Tomcat接收请求的编码格式,只对POST方式提交的数据有效,对GET方式提交的数据无效!
要设置GET的编码,可以修改server.xml文件中,相应的端口的Connector的属性:URIEncoding=“UTF-8”,这样,GET方式提交的数据才会被正确解码。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
特别要注意,使用eclipse修改server.xml文件
因为Tomcat服务器在Eclipse中启动时,会自动发布Eclipse中部署的项目
Eclipse只认得在它里面部署的项目,因此它会创建一个新的server.xml文件覆盖原来的文件,
里面只有Eclipse中部署的项目。
方法一(失败)
设置eclipse,取消自动发布。选择window==>Preferences==>server==>launching
去掉Automatically publish when starting servers的勾
方法二(成功,方法一的勾不能去掉)
eclipse中配置好tomcat后会有一个server项目,里面有一个Tomcat v7.0 Server at localhost-config。
Tomcat v7.0 Server at localhost-config下有个server.xml文件,直接修改它或替换成你修改好的文件。
方法三(成功,需要修改代码,而且下次环境不同还需要再次修改)
Tomcat(默认ISO-8859-1编码)
那么我们可以在控制层接受到参数后修改编码格式
canshu= new String(canshu.getBytes("iso-8859-1"),"utf-8");