tomcat 的中文编码问题
来源:互联网 发布:在淘宝买被子好吗 编辑:程序博客网 时间:2024/04/23 17:53
Overview
Tomcat是一个Servlet容器,有一些使用上需要注意的地方。tomcat内部默认的编码方式是ISO8859_1,当采用表单传值或者地址(url)传值时,需要注意编码转换以防中文乱码。
以下将介绍两种不同参数传值方式的编码转换处理方法。
参数提交方式
参数的提交方式有两种,一种是post,一种是get。
参数的提交方式有两种,一种是post,一种是get。
采用post 传值方式,通常出现在表格form中,这种参数提交方式比较容易,不需要其他的设置,直接在取参数前,执行一句request的编码即可:request.setCharacterEncoding("UTF-8"),取得的中文就不会是乱码了。
采用get传值方式,这个包括使用url 进行参数传值和form标签的method属性设为get。
对于这种方式采用request.setCharacterEncoding("UTF-8"); 不起作用。
还要在tomcat的server.xml的 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> 节点中,加上useBodyEncodingForURI="true"这个属性,这属性的默认值 是false 此时request.setCharacterEncoding("UTF-8");才会起作用。
另外也可以在那个节点中加上URIEncoding="UTF-8"属性,这样就不需要使用 request.setCharacterEncoding("UTF-8");了,直接就可以正确的读出 中文参数的值,但是这种情况只针对使用get方 式的情况,使用post提交的方式,仍然必须使用 request.setCharacterEncoding("UTF-8");不然读出的中文就是乱码。
因此最简单的方法是 在 tomcat 的sercer.xml文件中 加上useBodyEncodingForURI="true" 属性,之后每次使用request之前,request.setCharacterEncoding("UTF-8"); 那么就可以解决中文乱码问题。
以上是通过 设置 request 或者xml配置文件,进行修改实现。还有一种方法可以采用 String a = new String(request.getParameter("a").getBytes("ISO8859_1"),"UTF-8"); 其中 a 是某个参数变量, 特别注意:如果已经设置了 request.setCharacterEncoding("utf-8"), 在采用上述的 转换,则会使得页面报错,因此若要采用 此种方法,则不要设置request.setCharacterEncoding("utf-8")。
URL Encoding问题
URL 采用get的传值方式,因此 仅仅使用 request.setCharacterEncoding("utf-8"),无法实现编码转换,需要特别注意,应该采用 String a = new String(request.getParameter("a").getBytes("ISO8859_1"),"UTF-8"); 方式实现编码转换同时采用URL 传值时,对变量的值,也应该将其设置为UTF-8 , 可以采用 URLEncoder.encode(containerName,"UTF-8"),将其设置为UTF-8. 示例如下 "url=index.jsp?conPages=" + conPages + "&objPages="+ objPages+ "&path=" + URLEncoder.encode(path,"UTF-8")); 其中 path 可能包含中文,因此传值前,将其转化为UTF-8
URL 采用get的传值方式,因此 仅仅使用 request.setCharacterEncoding("utf-8"),无法实现编码转换,需要特别注意,应该采用 String a = new String(request.getParameter("a").getBytes("ISO8859_1"),"UTF-8"); 方式实现编码转换同时采用URL 传值时,对变量的值,也应该将其设置为UTF-8 , 可以采用 URLEncoder.encode(containerName,"UTF-8"),将其设置为UTF-8. 示例如下 "url=index.jsp?conPages=" + conPages + "&objPages="+ objPages+ "&path=" + URLEncoder.encode(path,"UTF-8")); 其中 path 可能包含中文,因此传值前,将其转化为UTF-8
- tomcat 的中文编码问题
- Spring with Tomcat 中文编码问题的解决方案
- Spring with Tomcat 中文编码问题的解决方案
- Spring with Tomcat 中文编码问题的解决方案
- 略谈HttpClient和Tomcat的中文编码问题
- Tomcat的编码问题
- Tomcat中文的问题
- Tomcat 5的编码问题
- Freemarker的中文编码问题
- JAVA的中文编码问题
- Struts的中文编码问题
- Flash的中文编码问题
- MySQL中文编码的问题
- 解决中文编码的问题
- Django的中文编码问题
- 页面的中文编码问题
- python的中文编码问题
- 一般的中文编码问题
- Template method模式
- 如何通过JavaScript函数获取Web报表单元格的值
- 记游西——把西游记倒过来看
- Unity+NGUI使用时一些要注意的事整理(持续更新)
- 我的服务端JS文件合并工具
- tomcat 的中文编码问题
- Ubuntu初体验
- 修改网络封包
- Android 4.0下设置静态IP
- vc编写驱动
- Java编程最差实践
- 对于内存的一点认识
- 各种版本 Linux/Unix ISO 下载
- 如何学习Java