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