javaWeb中文乱码情况的处理

中文乱码出现的原因是由于原因主要有两个:一个是字符转储传输过程中编码不一致导致的,一个是编码本就不支持中文。

支持中文的编码有(国标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添加过滤器的方式

            使用过滤器首先。。。。待续

猜你喜欢

转载自blog.csdn.net/qq_25066049/article/details/82762568