A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sjj632605 中级黑马   /  2018-12-6 16:37  /  1498 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


如果输入中文,你会发现乱码,是不是很不爽?
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>
  


2 个回复

倒序浏览
一个人一座城0.0 来自手机 中级黑马 2018-12-7 08:06:27
沙发
到此一观
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马