Web项目中,出现中文乱码问题的解决办法

1.以post方法提交的表单数据中有中文字符时

  tomcat对请求数据默认采用ISO-8859-1字符集进行解码,request对象的getParameter()方法得到的字符串是以ISO-8859-1转换而来的,所以在获取请求参数值之前,调用setCharacterEncoding("UTF-8")方法,将请求的解码方式设定为UTF-8.注意:页面和浏览器发送请求也应一致使用UTF-8,通过jsp页面设置page指令的contentType属性,指定页面内容的编码格式如下

<%@ page contentType="text/html; charset=utf-8" %>

  contentType和pageEncoding的区别:contentType定义响应的资源类型,也可以包含jsp页面和响应内容的字符集;pageEncoding指定jsp文件的字符集及默认的contentType字符集.

 

2.以get方法提交的表单数据中有中文字符时

  采用get方法提交表单时,提交的数据作为查询字符串被附加到URL的末端发送到服务器,对于这部分数据,在服务器调用setCharacterEncoding()方法是不起作用的,我们需要在得到请求参数值后进行编码转换.

<%
    String userName = request.getParameter("userName");
    userName = new String(name.getBytes("ISO-8859-1"),"UTF-8");
%>

 

3.在Tomcat中设置字符集

  当表单提交get方法时,虽然可以通过构造一个新的String方式解决中文乱码问题,但是当获取多个参数值时,每个参数都进行重新编码,操作比较繁琐.所以可以通过在Tomcat中设置字符集的方式解决.

  方法:找到Tomcat安装路径下的子目录conf\server.xml文件,在<Connector>元素中添加URIEncoding属性,将值设置为"UTF-8"

                

 

posted @ 2019-02-13 14:42  锈钉  阅读(1155)  评论(0)    收藏  举报