作为工作多年的老鸟,遇到了很多中文乱码问题,但是总是通过google和try again and again的方式解决,大部分是通过设置new String的两个参数,用iso--8859-1, gb2312,gbk,utf-8相互转化来解决。至于原理是不了解的,下次遇到还是需要google。最近有同事又遇到中文乱码问题,通过new String解决后,下决心弄明白中文乱码的前因后果。
常用的编码如下:
iso--8859-1;
GB2312;
GBK;
UTF-8.
JSP页面可以设置字符集的地方至少有下面两处的地方:
pageEncoding属性说明该jsp在web服务器编译成class的编码方式,<meta content="utf-8">是说明浏览器需要用什么编码来解析该html文件。
POST方式:
参数是作为http的body来提交的,pageEncoding属性指定了提交到服务器的编码字符集。服务器端的tomcat默认是以 iso--8859-1字符集来解码,可以通过方法:
request.setCharacterEncoding("字符集");
来指定字符集来解码参数。jsp的pageEncoding和服务器端的 request.setCharacterEncoding字符集必须一致,否则就会产生乱码。
比如:上面的JSP的pageEncoding="UTF-8",服务器端就必须用 request.setCharacterEncoding("UFT-8")来指定接受字符集,然后用request.getParameter("参数")来接收参数,这样就不会出现中文乱码。
一般服务器端通过写一个filter来设置 request.setCharacterEncoding("UFT-8")达到简化的目的,比如spring的filterorg.springframework.web.filter.CharacterEncodingFilter。
POST的方式的http文件头如下:
http的body如下:
GET方式:
假如没有指定jsp的form标签的method的属性,默认提交就是GET方式提交。或者直接指定属性method=“GET”。
GET方式提交参数是作为url的参数来提交的,而不是http的body。服务器端的方法request.setCharacterEncoding("UTF-8");对于GET方式提交的参数没有作用。因为servlet规范文档里面提到该方法的作用范围。
Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader().
可以看出对于get方法他是无能为力的。那如何对GET方式提交的参数指定编码呢,可以在服务器里设置,tomcat可以如下设置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
URIEncoding属性设置了GET提交的参数的编码方式,假如不设置的话,默认是用 iso--8859-1来解码,
设置的URIEncoding属性必须跟JSP页面的pageEncoding指定的字符集一致,和<meta content="utf-8">的设置无关。
GET方式的http的文件头是:
http的body的内容是空:
- 大小: 24.2 KB
- 大小: 7.1 KB
- 大小: 2.6 KB
- 大小: 32.1 KB
- 大小: 21.9 KB
- 大小: 35.8 KB
- 大小: 23.9 KB
分享到:
相关推荐
很好用,很全面的解决java Web开发的解决中文乱码的文档
全面讲解了java web编程所需的核心技术,并涵盖一些高级技术主题。主要内容包括web应用程序运行原理、...另外,书中提供了大量的实例代码,读者可以自由取用,这些代码功能强大,适合解决java web开发中的实际问题。
本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...
涵盖更多内容,列举了大量典型实例具有超强的实用性,另外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》各篇独立,适合读者全面学习或对部分内容重点学习。 读者对象 有Java基础,想...
本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...
本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...
对Java Web开发中遇到的乱码问题有很全面的解决方案!
本书采用理论阐述与项目演示相结合的方式,全面讲解了java web编程所需的核心技术,并涵盖一些高级技术...另外,书中提供了大量的实例代码,读者可以自由取用,这些代码功能强大,适合解决java web开发中的实际问题。
本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...
涵盖更多内容,列举了大量典型实例具有超强的实用性,另外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》各篇独立,适合读者全面学习或对部分内容重点学习。 读者对象 有Java基础,想进一步...
动态网站篇深入讲解Servlet、JSP、JavaBean、JDBC数据库连接、数据库连接池等Java Web开发的核心技术。系统框架篇则是以架构设计的高度,讲解搭建网站的三大框架Struts、Hibernate、Sprin9及标签库。项目实战篇详细...
(2)项目是否为utf-8格式(同时看看的源代码文件中,中文是否乱码)。 (3)JSP页面是否是utf-8 格式。 (4)在web.xml 是否配置了编码过滤器。 (5)数据源配置的url(?useUnicode=true&characterEncoding=UTF-8),...
Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中实现页面模板(所谓的MasterPage技术) Tool Tip 示例(FILTER版) Tool Tip示例 (htc版) 一个.net发送HTTP数据实体的类 按键跳转以及按Enter以不同参数提交,及...
4 Spring Boot与Web开发 55 4.1 Web开发简介 55 4.2 静态资源映射规则 56 4.3 引入Thymeleaf 60 4.4 Thymeleaf语法 61 4.5 SpringMVC自动配置原理 67 4.6 SpringBoot扩展与全面接管 70 4.7 如何修改SpringBoot的默认...
全面生成具有Struts1.2 框架支持的开发工具 1、自动生成的内容 ★ VO、POJO对象 ★ DAO接口 ★ IMPL接口实现类 ★ DAO工厂 ★ VO、POJO工厂 ★ DBC数据库连接管理类,数据库事务处理机制 ★ EncodingFilter ...
的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...
的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...
的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...
的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...