javaweb中文乱码处理

在项目开发中建议全部采用UTF-8。

一、文件的乱码

1. 项目文本文件默认编码

     Eclipse下,【右击项目】->【Properties】->【Resource】->【Text file encoding】     

2. 文件默认编码:默认使用项目的默认编码

     Eclipse下,【右击文件】->【Properties】->【Resource】->【Text file encoding】

3.  JSP 文件编码: JSP 要翻译为 Servlet

3.1 JSP文件编码

     Eclipse下,【右击文件】->【Properties】->【Resource】->【Text file encoding】

3.2 JSP翻译为Servlet时的编码

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

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

1. 浏览器端 编码

一般由服务器端告诉浏览器如何解码数据。

1.1 Servlet

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

        或者  

response.setCharacterEncoding(“UTF-8”);

1.2 JSP         

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

1.3 通用         

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

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

2. 服务器端 编码

将客户端传过来的数据进行解码。

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

2.1 最简单方式

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

2.2 比较好的解决方案

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

3. 比较通用方案

在一个Filter中更改所有请求的编码方式。

3.1 在src中添加filter来设置编码格式是中文

filter类可以在tomcat的包里面:apache-tomcat-6.0.16.zip\apache-tomcat-6.0.16\webapps\examples\WEB-INF\classes\filters下面,SetCharacterEncodingFilter.java文件。

3.2 在 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>

4. GET提交方式中文乱码解决

通过修改request.setCharacterEncoding(“UTF-8”);只能解决POST提交方式的请求编码,对GET无效。

4.1 最简单解决方案

该解决方案不再需要任何额外配置(如filter)。

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

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

4.2 在 tomcat4 之后

在 tomcat4 之后,可以通过如下配置来解决中文乱码,但必须配置设置编码的 filter。在conf\server.xml文件中设置如下:

<Connector port="8080" protocol="HTTP/1.1"
	connectionTimeout="20000" redirectPort="8443" 
	useBodyEncodingForURI="true" />

然后request.setCharacterEncoding(“UTF-8”)也可解决GET乱码。


转载于:https://my.oschina.net/hongdengyan/blog/180154

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值