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

浙公网安备 33010602011771号