java中可以出现的中文乱码的集中解决

来源:互联网 发布:淘宝上怎么买二手货 编辑:程序博客网 时间:2024/05/17 22:35

java中可以出现的中文乱码的集中解决


从学习javaweb开始就会经常遇到中文乱码,今天就做以下记录:

1. 要避免项目中遇到乱码,首先就是在搭建项目的设置工作空间的字符编码,若是多人开发,就更应该做到统一,在eclipse中选择widnow -> preferences -> genreal -> workspace,在这里设置工作空间的字符编码,我通常都会设置成utf-8

1.1 最好的方式就是所有的都统一用一种编码,在所有jsp页面中设置编码为utf-8,这样可以很大程度上避免乱码。在jsp的开头设置编码

?
1
<%@ page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

2. 在前台向后台发送请求的时候也可能会出现中文乱码,这里又要分请求的方式,

2.1 若是采用get请求出现的中文乱码,那么就有两种解决方法:

第一种就是设置tomcat服务器的server.xml这个文件,找到下面的这个段代码,添加上URIEncoding="UTF-8",这种方法最简单

?
1
<connector connectiontimeout="20000"port="8080"protocol="HTTP/1.1"redirectport="8443"uriencoding="UTF-8"></connector>
第二种就是在代码中使用String的构造方法转码,首先使用request.getParamter获取到参数,在用这个字符串构造出指定字符编码的String,eg:
?
1
newString(request.getParamter("xxx","utf-8")

若是在js中请求后台,也是使用get的方式请求,还可以使用javascript提供的encodeURI这个方法进行转码,然后再后台java中使用URLDecode.decode()进行解码,在java中有URLEncode.encode(),URLDecode.decode() 这个两个方法,一个是转码,一个是解码,对应的jsavascript中也有类似的两个方法。

2.2 若采用的是post方式请求后台出现乱码,也有几种方式解决:

第一种 使用request.setcharacterencoding这个方法设置请求内容的编码,这个方法只对post方式起作用就,自己也可以自己写一个过滤器来设置编码。

第二种 若项目中使用了Struts2,那么很简单,在struts.xml中配置一个参数

?
1
<constant name="struts.i18n.encoding"value="utf-8"></constant>
第三种 若使用了spring也简单,配置一个spring中提供的拦截器:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<filter>
    //过滤器使用spring类CharacterEncodingFilter
             <filter-name>encodingFilter</filter-name>
             <filter-class>
                        org.springframework.web.filter.CharacterEncodingFilter
             </filter-class>
             <init-param>
                        <param-name>encoding</param-name>
    //过滤器过滤后的编码为utf-8
                        <param-value>utf-8</param-value>
             </init-param>
  </filter>
  <filter-mapping>
    //过滤所有的路径:/*代表所有的路径
             <filter-name>encodingFilter</filter-name>
             <url-pattern>/*</url-pattern>
  </filter-mapping>
3. 从后台采用request.getWriter的流形式向前台写内容,若是出现乱码,采用response.setcharacterencoding设置编码,可以解决乱码,还可以采用response.setContentType("text/html; charset=utf-8")来设置页面的编码

4. 后台存入数据到数据库中也有可能会出现乱码,在取出来也就是是乱码,解决的方式就是设置数据库的字符编码,设置字符编码为utf-8,这个要看使用的什么数据库,这里说下mysql中设置数据库中的编码,在数据安装完成之后配置mysql数据库的字符编码为utf-8;若是数据库已经安装了可以到mysql的安装目录中找到配置启动方式


原创粉丝点击