Javaweb中文乱码问题

浏览器正确解析中文字符

step1: JSP页面部分

目的:使浏览器正确使用相对应的字符集解析相应页面,避免中文乱码问题

在 JSP 页面上输入中文, 请求页面后不出现乱码: 确保  

contentType="text/html; charset=UTF-8",pageEncoding="UTF-8" charset 和 pageEncoding 的编码一致, 且都支持中文. 通常建议取值为UTF-8 ,还需保证浏览器的显示的字符编码也和请求的 JSP 页面的编码一致.

 

提交表单数据中包含中文参数,获取中文参数值

step2:获取POST请求参数的中文参数

对于 POST 请求: 只要在获取请求信息之前(在调用 request.getParameter 或者是 request.getReader 等),

调用 request.setCharacterEncoding("UTF-8")

 

step3:获取GET请求参数的中文参数

对于 GET 请求: 前面的方式对于 GET 无效

默认参数在传输过程中使用的编码为 ISO-8859-1,浏览器地址栏中数据的编码字符集

方式一:

编码和解码获取的字符串

        String val = request.getParameter("username");
        String username = new String(val.getBytes("UTF-8"), "UTF-8");
        out.print(username); 

 

方式二:

可以通过修改 Tomcat 的 server.xml 文件的方式,使request.setCharacterEncoding("UTF-8") 可以有效设置Get 请求的编码方式

步骤:
第一步
修改Tomcat 的 server.xml 文件,在文件中把
<Connector connectionTimeout="20000" port="8989" protocol="HTTP/1.1" redirectPort="8443" />
修改为
<Connector connectionTimeout="20000" port="8989" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>

第二步
修改Eclipse中Servers 文件夹下 的server.xml 文件,在文件中把
<Connector connectionTimeout="20000" port="8989" protocol="HTTP/1.1" redirectPort="8443" />
修改为
<Connector connectionTimeout="20000" port="8989" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>

--------------------------------------------------------------------------------------------------
参照 http://localhost:8989/docs/config/index.html 文档的 useBodyEncodingForURI 属性. 
为 Connector 节点添加 useBodyEncodingForURI="true" 属性即可使上面的方法对  GET请求有效. 

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

 

 

 

zwy

posted @ 2019-02-14 14:23  zwyk  阅读(96)  评论(0)    收藏  举报