当前位置: 首页 > Java教程 > 正文

解决Java Web项目中文乱码的方法

收藏文章Loading
收藏
(60)

在实际的Java Web项目开发过程中,经常会遇到中文乱码的问题,那么,今天我们就来分析一下项目中出现中文乱码的原因以及解决办法,因为出现乱码的方式有好几种,我简单总结一下吧,为以后留着用,也算总结学习一下。

一个Web请求需要经过的编码过程

一、文件的乱码

1、项目文本文件默认编码:【右击项目】->【Properties】->【Resource】->【Text file encoding】

2、文件默认编码:默认使用项目的默认编码:【右击文件】->【Properties】->【Resource】->【Text file encoding】

3、 JSP 文件编码:【右击文件】->【Properties】->【Resource】->【Text file encoding】

4、JSP翻译为Servlet时的编码:

<%@ page language="java" pageEncoding="utf-8"%>

二、浏览器和服务器间传输数据的乱码

1、 浏览器端编码,一般由服务器端告诉浏览器如何解码数据:

Servlet

response.setContentType("text/html; charset=UTF-8");
//或者
response.setCharacterEncoding("UTF-8");

JSP

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

通用html

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

注:浏览器编码可以由我们手工修改,但最后不要这样,一般让浏览器自动选择即可。

2、浏览器和服务器间传输数据的乱码

服务器端编码,将客户端传过来的数据进行解码:浏览器默认使用ISO-8859-1进行编码数据,然后将数据传输到服务器,因此我们默认只需要将浏览器发送过来的数据转换为我们需要的编码即可。

最简单方式:

String username = request.getParameter("username");
username = new String(username.getBytes("ISO-8859-1"), "UTF-8");

比较好的解决方案:

// 必须在获取参数之前,调用如下方法先解码
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");

比较通用方案:在一个Filter中更改所有请求的编码方式:

在src中添加filter来设置编码格式是中文,filter类可以在tomcat的包里面:apache-tomcat-6.0.16.zip\apache-tomcat-6.0.16\webapps\examples\WEB-INF\classes\filters下面,SetCharacterEncodingFilter.java文件

在 web.xml 中配置 filter ,具体配置如下页:

<filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

通过修改上面的方法只能解决POST提交方式的请求编码,对GET无效。那么,GET提交方式中文乱码解决方法如下。

TOMCAT默认ISO-8859-1 因此可以设置默认编码为UTF-8解决,在conf\server.xml文件中设置如下

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

本文固定链接: http://www.csyor.com/622.html - 穿梭于偶然

该日志由 Csyor 于2014年03月08日发表在 Java教程 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 解决Java Web项目中文乱码的方法 - 穿梭于偶然
关键字: , ,

解决Java Web项目中文乱码的方法:目前有2 条留言

发表评论


快捷键:Ctrl+Enter