(1)准备知识

凡是会涌现乱码的地方都是由于编码的问题产生的,页面默认编码为ISO-8859-1,简体中文编码为GB2312,中文汉字集(简体与繁体)编码为GBK,国际编码为UTF-8。
由于UTF-8编码支持的措辞类型最广,以是在这里建议凡是用到字符编码的地方都利用UTF-8格式。
接下来看看所有可能涌现乱码场景的办理方案。

(2)页面显示乱码

jsp从数据库获取显示乱码web项目中的中文乱码问题 RESTful API

html页面

在页面的<head>标签内添加<meta>标签,内容如下

<meta http-equiv=\公众Content-Type\"大众 content=\"大众text/html; charset=UTF-8\"大众>

或者

<meta charset=\"大众utf-8\"大众>

jsp页面

在jsp页面的顶部加上以下代码,重点是charset=UTF-8和pageEncoding=\公众UTF-8\"大众

<%@ page language=\公众java\公众 contentType=\"大众text/html; charset=UTF-8\"大众 pageEncoding=\公众UTF-8\"大众%>

同时在<head>标签下添加<meta>标签,代码如下

<meta http-equiv=\公众Content-Type\公众 content=\公众text/html; charset=UTF-8\"大众>

为了让所有新建的jsp页面默认为utf-8编码,可以在相应的IDE下设置。
以eclipse为例,window > Prefrences > Web > JSP Files > Encoding处改成支持UTF-8格式的选项。

jsp页面编码设置

(3)客户端和做事器端传输乱码

tomcat配置

在tomcat安装目录下 > conf > server.xml,在server.xml文件中找到Connector port=\"大众8080\"大众所在的标签,在标签内部添加URIEncoding=\公众utf-8\"大众,添加后为

<Connector port=\"大众8080\公众

protocol=\"大众HTTP/1.1\公众

maxThreads=\"大众150\公众

connectionTimeout=\"大众200000\"大众

redirecPort=\公众8443\"大众

URIEncoding=\公众utf-8\"大众/>

Request要求

例如以下要求办法

<a href=\"大众/myProject/displayServlet?username=张三&password=123\公众>显示用户名和密码</a>

这种情形下,可以看出来该要求是GET要求,在吸收要求时如果涌现乱码,须要利用以下代码

username= new String(username.getBytes(\公众ISO-8859-1\"大众),\"大众UTF-8\公众)

在表单提交的时候,如果是POST要求,与GET要求不一样,添加的因此下代码

request.setCharacterEncoding(\"大众utf-8\"大众)

把稳:request.setCharacterEncoding(\"大众utf-8\"大众)只在POST要求下生效

Response相应

在servlet中利用response进行输出时,如果涌现乱码,须要添加以下代码

response.setContentType(\"大众text/html;charset=utf-8\"大众);

response.setCharacterEncoding(\"大众UTF-8\"大众)

struts.xml

如果利用了Struts2框架,在strust.xml文件中添加如下代码

<constant name=\公众struts.i18n.encoding\"大众 value=\"大众UTF-8\"大众></constant>

Filter

还有一种最保险的方法是添加自定义编码过滤器,或者利用spring自带的过滤器,在web.xml中添加以下代码

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>

org.springframework.web.filter.CharacterEncodingFilter

</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</filter>

(4)数据库插入乱码

在做事器获取到精确数据后,插入到数据库却涌现乱码,很有可能是数据库的编码问题,按照以下方法来做可以避免这种问题

安装

在数据库安装过程中会选择编码办法,此时选择utf-8格式

创建数据库

在创建数据库的过程中,按照以下例子

CREATE DATABASE `share` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

创建表

在创建表天生的SQL后面加上

ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据库连接

在利用hibernate或者spring连接数据库时,按照以下例子

<property name=\公众connection.url\公众>

<![CDATA[jdbc:mysql://localhost:3306/testDB?useUnicode=true&characterEncoding=utf8]]>

</property>

(5)总结

在完成上述的讲解后,基本不会涌现乱码的环境,大家也可以考试测验下。
如果涌现了乱码的情形,也不要焦急,先镇静剖析,乱码是涌如今哪一个环节,然后按照我讲的几部分去找对应的办理办法。

同时也是教大家一种问问题的办法,先自己剖析问题出在哪里,直接问别人“我的项目中涌现了中文乱码,你能帮我看一下么?”和“数据返回页面的时候涌现乱码了,你能帮我看一下么?”你以为别人会喜好哪种提问办法呢?