`
dasheng
  • 浏览: 146367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java web开发中文乱码全面解决攻略

阅读更多


   作为工作多年的老鸟,遇到了很多中文乱码问题,但是总是通过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
0
0
分享到:
评论

相关推荐

    java Web开发乱码解决方案

    很好用,很全面的解决java Web开发的解决中文乱码的文档

    《Java Web开发与实战--Eclipse+Tomcat+Servlet+JSP整合应用》.(刘伟,张利国).[PDF].zip

    全面讲解了java web编程所需的核心技术,并涵盖一些高级技术主题。主要内容包括web应用程序运行原理、...另外,书中提供了大量的实例代码,读者可以自由取用,这些代码功能强大,适合解决java web开发中的实际问题。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

     本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...

    java web开发技术大全

    涵盖更多内容,列举了大量典型实例具有超强的实用性,另外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》各篇独立,适合读者全面学习或对部分内容重点学习。 读者对象 有Java基础,想...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

     本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

     本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...

    Java乱码解决方案

    对Java Web开发中遇到的乱码问题有很全面的解决方案!

    Java Web开发与实战:Eclipse+Tomcat+Servlet+JSP整合应用(含光盘源代码)

    本书采用理论阐述与项目演示相结合的方式,全面讲解了java web编程所需的核心技术,并涵盖一些高级技术...另外,书中提供了大量的实例代码,读者可以自由取用,这些代码功能强大,适合解决java web开发中的实际问题。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

     本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...

    java web技术开发大全(最全最新)

    涵盖更多内容,列举了大量典型实例具有超强的实用性,另外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》各篇独立,适合读者全面学习或对部分内容重点学习。 读者对象 有Java基础,想进一步...

    Java Web应用详解.张丽(带详细书签).pdf

    动态网站篇深入讲解Servlet、JSP、JavaBean、JDBC数据库连接、数据库连接池等Java Web开发的核心技术。系统框架篇则是以架构设计的高度,讲解搭建网站的三大框架Struts、Hibernate、Sprin9及标签库。项目实战篇详细...

    网上书店系统(Struts+Hibernate)(Java EE项目案例)

    (2)项目是否为utf-8格式(同时看看的源代码文件中,中文是否乱码)。 (3)JSP页面是否是utf-8 格式。 (4)在web.xml 是否配置了编码过滤器。 (5)数据源配置的url(?useUnicode=true&characterEncoding=UTF-8),...

    asp.net知识库

    Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中实现页面模板(所谓的MasterPage技术) Tool Tip 示例(FILTER版) Tool Tip示例 (htc版) 一个.net发送HTTP数据实体的类 按键跳转以及按Enter以不同参数提交,及...

    springboot知识点整理

    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的默认...

    AutoCode代码生成器(Struts1.2版)

    全面生成具有Struts1.2 框架支持的开发工具 1、自动生成的内容 ★ VO、POJO对象 ★ DAO接口 ★ IMPL接口实现类 ★ DAO工厂 ★ VO、POJO工厂 ★ DBC数据库连接管理类,数据库事务处理机制 ★ EncodingFilter ...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 安装版.zip

    的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 源码版.zip

    的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 源码版.zip

    的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 安装版.zip

    的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...

Global site tag (gtag.js) - Google Analytics