中文乱码出现的原因是由于原因主要有两个:一个是字符转储传输过程中编码不一致导致的,一个是编码本就不支持中文。
支持中文的编码有(国标GB):GBK,GB2312,GBK18030,和UTF-8。(个人更喜欢使用UTF-8)
javaWeb中乱码情况主要分三种情况:
一、jsp页面显示中文乱码。保存中文字符 重新打开乱码。
二、客户端发送数据到服务器,服务器接收出现乱码。客户端发送数据又分为使用get请求和post请求两种。
三、服务器发送数据到客户端,客户端显示出现乱码的情况。
解决办法:
一、(1)jsp页面显示中文乱码。
//页面开始添加
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
//head中添加
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
*pageEncoding用于设置JSP页面本身的编码
(2)保存中文字符 重新打开乱码。
如果是myeclipse(其他IDE类似)
Windows -> preference -> general -> Content Types ->Text 选择你需要显示中文的文件类型,将文件保存的默认编码设置为UTF-8。
二、客户端发送数据到服务器,服务器接收出现乱码。客户端发送数据又分为使用get请求和post请求两种。
(1)get请求使用URL传参,浏览器对于请求的字符串一般使用utf-8。但是发送到服务器端,tomcat默认使用ISO-8859-1来解码,于是乱码就产生了。
解决办法有两个:一、在客户端接收的时候手动解码。
String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
二、配置tomcat的server.xml文件,添加URIEncoding="UTF-8"。
<Connector part="8080" protocal="HTTP/1.1"
connectionTimeout="8000" redirectPort"8443" URIEncoding="UTF-8"/>
(2)post请求乱码
解决办法也是两个:一、和get方法一样手动解码
String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
二、在post函数里面的第一行添加
request.setCharactorEncoding("UTF-8")
(3)对于两种请求,单独解码或者配置都比较麻烦。可以采用在web.xml添加过滤器的方式
使用过滤器首先。。。。待续