现在的位置: 首页 > 综合 > 正文

浅谈java web开发中的中文乱码的解决方法

2014年09月12日 ⁄ 综合 ⁄ 共 1782字 ⁄ 字号 评论关闭

对于不少java web开发的新手来说,jsp中文乱码问题肯定困扰自己很久了,笔者自己曾经也为这个问题头疼过,现在就将我自己常用的解决办法与大家分享一下,希望对有需要的人有意点点帮助,更欢迎大虾们批评与指正。

     解决这个问题的一个原则就是编码一致(jsp页面、请求和响应编码、服务器编码、数据库编码的一致),具体叙述如下:

1.修改jsp页面的默认编码格式为pageEcoding="UTF-8"(笔者建议统一使用UTF-8的编码格式,下同)

     在MyEclipse(java web 程序员通常都用这个IDE,其他的IDE应该相似,顺便插一句,MyEclipse最好用6.5版本的)里面修改jsp页面的默认编码格式,这样的话,每次新建jsp页面的时候,jsp页面的pagEncoding属性就会设置成你配置的那个值,具体见下图:

     修改jsp默认编码格式

 

2.添加过滤器(filter),使得web的请求和响应的编码格式一致:

     2.1编写filter的java类:

 import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingFilter implements Filter {

 public void destroy() {
  // TODO Auto-generated method stub

 }

 public void doFilter(ServletRequest arg0, ServletResponse arg1,
   FilterChain arg2) throws IOException, ServletException {
  // TODO Auto-generated method stub
  arg0.setCharacterEncoding("UTF-8");
  arg1.setContentType("text/html;charset=UTF-8");
  arg2.doFilter(arg0, arg1);
  
 }

 public void init(FilterConfig arg0) throws ServletException {
  // TODO Auto-generated method stub

 }

}

 

2.2 在web.xml中配置filter,对所有的请求与相应进行过滤,统一编码(笔者的filter名字为encodingFilter):

      <filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>com.labxznu.filter.EncodingFilter</filter-class>
 </filter>
  <filter-mapping>
   <filter-name>encodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>

3.配置tomcat(java web项目常用的服务器)的链接编码

 在tomcat安装目录下,找到conf目录,打开该目录下的server.xml文件,按照下面的代码进行配置,红色部分为要添加的内容,将其添上即可:

            <Connector port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>

 

4.将数据库的编码格式设置成utf-8(一般来说,进行前三步的设置就可以解决乱码问题,如果不行的话再加上这一步)。

 

最后:以上就是笔者个人解决中文乱码的常用方法,希望给有需要的朋友一点帮助,欢迎大虾进行必要的指正与补充!谢谢浏览!

抱歉!评论已关闭.