phpCE.CN,设计手册
3、表单get提交方式的乱码处理方式 。
如果使用get方式提交中文,接受参数的页面也会出现乱码,这个乱码的原因也是tomcat的内部编码格式iso8859-1导致 。Tomcat会以get的缺省编码方式iso8859-1对汉字进行编码,编码后追加到url,导致接受页面得到的参数为乱码/、 。
解决办法:
A、使用上例中的第一种方式,对接受到的字符进行解码,再转码 。
B、Get走的是url提交,而在进入url之前已经进行了iso8859-1的编码处理 。要想影响这个编码则需要在server.xml的Connector节点增加useBodyEncodingForURI="true"
属性配置,即可控制tomcat对get方式的汉字编码方式,上面这个属性控制get提交也是用request.setCharacterEncoding("UTF-8")所设置的编码格式进行编码 。所以自动编码为utf-8,接受页面正常接受就可以了 。但我认为真正的编码过程是,tomcat又要根据 更改D:Tomcatconfserver.xml,指定浏览器的编码格式为“简体中文”:
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" URIEncoding=”UTF-8”/> PHPCE.CN,设计手册
里面所设置的URIEncoding=”UTF-8”再进行一次编码,但是由于已经编码为utf-8,再编码也不会有变化了 。如果是从url获取编码,接受页面则是根据URIEncoding=”UTF-8”来进行解码的 。
需要加入的原因大家可以去研究 /webapps/tomcat-docs/config/http.html下的这个文件就可以知道原因了
可以这样验证你的更改是否成功:在更改前,在你出现乱码的页面的IE浏览器,点击菜单“查看|编码”,会发现“西欧(ISO)”处于选中状态 。而更改后,点击菜单“查看|编码”,会发现“简体中文(GB2312)”处于选中状态 。
4、上传文件时的乱码解决
上传文件时,form表单设置的都是enctype="multipart/form-data" 。这种方式以流方式提交文件 。如果使用apach的上传组件,会发现有很多乱码想象 。这是因为apach的先期commons-fileupload.jar有bug,取出汉字后进行解码,因为这种方式提交,编码又自动使用的是tomcat缺省编码格式iso-8859-1 。但出现的乱码问题是: 句号,逗号,等特殊符号变成了乱码,汉字如果数量为奇数,则会出现乱码,偶数则解析正常 。
解决方式: 下载commons-fileupload-1.1.1.jar 这个版本的jar已经解决了这些bug 。
但是取出内容时仍然需要对取出的字符进行从iso8859-1到utf-8转码 。已经能得到正常所有汉字以及字符 。
5、Java代码关于url请求,接受参数的乱码
url的编码格式,取决于上面所说的URIEncoding=”UTF-8” 。如果设定了这个编码格式,则意味着所有到url的汉字参数,都必须进行编码才可以 。否则得到的汉字参数值都是乱码,例如
一个链接 Response.sendDerect(“/a.jsp?name=张大维”);而在a.jsp里面直接使用
PHPCE.CN,设计手册
String name = request.getParameter("name");得到的就是乱码 。因为规定了必须是utf-8才可以,所以,这个转向应该这样写:
Response.sendDerect(“/a.jsp?name=URLEncode.encode(“张大维”,”utf-8”);才可以 。
如果不设置这个参数URIEncoding=”UTF-8”,会怎么样呢? 不设置则就使用了缺省的编码格式iso8859-1 。问题又出来了,第一就是参数值的个数如果是奇数个数,则就可以正常解析,如果使偶数个数,得到最后字符就是乱码 。还有就是如果最后一个字符如果是英文,则就能正常解析,但中文的标点符号仍出现乱码 。权宜之计,如果您的参数中没有中文标点符号,则可以在参数值最后加一个英文符号来解决乱码问题,得到参数后再去掉这个最后面的符号 。也可以凑或使用 。
推荐阅读
- 风云岛行动初始英雄选哪个 风牧远大锅龙音子选谁
- 网上已选座还用去值机柜台吗
- lol剑皇是什么梗
- 风云岛行动新英雄安魁介绍 安魁技能是什么
- 京东怎么收藏宝贝
- 风云岛行动段位有哪些 段位从高到低介绍
- Win7电脑提示runtime error怎么解决?
- 属鸡和属马的合得来吗
- 风云岛行动打击力度和硬直抵抗介绍 什么是打击力度和硬直抵抗