黑马程序员技术交流社区
标题: 【上海校区】web解决乱码问题 [打印本页]
作者: sjj632605 时间: 2018-12-6 16:37
标题: 【上海校区】web解决乱码问题
如果输入中文,你会发现乱码,是不是很不爽?
1.1. 请求参数乱码处理首先:为什么有编码这种东西?
答:由于数据传输是二进制的,类似10110001这种形式。
原因:快。
所以要把我们的文字进行编码成二进制,再解码成我们所认识的文字。
但是各国有各种语言,无法做到统一的编码,所以有多种编码格式,例如:utf-8 、GBK 、ISO-8859-1等
如果编码和解码的不是同一种规则,则会出现乱码。
图解:
Utf-8 ---- 8859 ------ 8859 ----- utf-8
乱码产生的原因:
Get 提交的中文乱码解决:<h1>GET方式</h1>
<form method="get" action="/day19/request3">
帐号:<inputtype="text" name="username"/><br/>
<inputtype="submit" value="提交"/>
</form>
第一种方案:修改tomcat默认的编码方式(不推荐)默认情况下,tomcat使用的的编码方式:iso-8859-1
修改tomcat下的conf/server.xml文件
找到如下代码:
<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443" />
这段代码规定了Tomcat监听HTTP请求的端口号等信息。
可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat(默认ISO-8859-1编码)以UTF-8的编码处理get请求。
修改完成后:
<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
缺点:
方法不是很常用. 修改tomcat的servlet.xml
会很死板.
如果两个项目: 一个是UTF-8, 另一个是GBK
第二种方案:先编码再解码(★★★★★)
POST提交的中文乱码解决:<h1>POST方式</h1>
<formmethod="post" action="/day19/request3">
城市:<input type="text"name="city"/><br/>
<input type="submit"value="提交"/>
</form>
第一种解决方案 先编码再解码(了解):
第二种解决方案 设置请求编码(★★★★★):这种方式只对 请求体 有效,算是post的偷懒方式,开发时最常用
配置全站乱码过滤器 在web.xml中配置过滤器:
<filter> <filter-name>GenericEncodingFilter</filter-name> <filter-class>cn.itcast.filter.GenericEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>GenericEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
作者: 一个人一座城0.0 时间: 2018-12-7 08:06
到此一观
作者: 不二晨 时间: 2018-12-11 15:08
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |