作为工作多年的老鸟,遇到了很多中文乱码问题,但是总是通过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开发中解决乱码问题的方法。 #### 二、乱码产生的原因 乱码主要由以下几种情况引起: 1. **页面本身的编码与浏览器解析编码不一致**:例如页面实际编码为GBK,但浏览器默认按照ISO-...
在进行Java Web开发时,中文乱码问题是一个常见的难题,尤其对于初学者而言,解决编码问题往往耗费大量时间。本文针对Java Web开发中字符编码问题进行探讨,主要围绕字符编码的种类、设置方式以及不同页面类型的代码...
通过这个"乱码处理归纳"文件,你可以系统地学习和总结关于Java Web开发中的乱码问题及其解决方案,不断提升你的编码实践能力。在开发过程中,遇到类似问题时,可以参考这些知识点,以便快速定位并解决问题。
全面讲解了java web编程所需的核心技术,并涵盖一些高级技术主题。主要内容包括web应用程序运行原理、...另外,书中提供了大量的实例代码,读者可以自由取用,这些代码功能强大,适合解决java web开发中的实际问题。
本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...
涵盖更多内容,列举了大量典型实例具有超强的实用性,另外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》各篇独立,适合读者全面学习或对部分内容重点学习。 读者对象 有Java基础,想...
本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...
本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...
在Java编程中,中文乱码问题是一个常见的困扰,...通过以上分析,我们对Java中的中文乱码问题有了全面的理解。在遇到此类问题时,按照这些线索进行排查,通常能够找到并解决问题。记住,一致性是解决编码问题的关键。
在Java Web开发中,尤其是在整合SSH(Struts + Spring + Hibernate)框架时,经常会遇到中文乱码的问题。这不仅影响用户体验,还可能导致数据处理错误。本文将详细介绍如何通过自定义过滤器(Filter)和请求处理器...
本文将全面解析Web开发中的乱码处理方法,旨在帮助开发者彻底解决中文乱码问题。 ### 一、理解乱码产生的原因 乱码的根本原因在于编码不一致或编码转换错误。Web应用涉及多个环节,包括客户端输入、服务器处理、...
在开发基于Java的Web应用程序时,JSP(Java Server Pages)页面常常会遇到中文乱码的问题。这通常发生在数据的输入、处理或输出阶段,给用户界面带来不便,也增加了开发者的调试难度。本文将深入探讨JSP中文乱码的...
本书采用理论阐述与项目演示相结合的方式,全面讲解了java web编程所需的核心技术,并涵盖一些高级技术...另外,书中提供了大量的实例代码,读者可以自由取用,这些代码功能强大,适合解决java web开发中的实际问题。
在Java Web开发中,使用Ajax进行异步数据交互时,经常会遇到中文乱码的问题。这主要涉及到字符编码的处理,特别是当Ajax请求发送的数据包含中文字符时。以下是两种常见的解决方法: **方法一:使用`encodeURI`进行...
本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言...
在Java Web开发中,中文乱码是一个常见的问题,尤其是在接收HTTP请求或响应时。Filter(过滤器)是Servlet规范的一部分,用于在请求处理前后执行一些预处理或后处理任务,解决乱码问题就是其中之一。本篇文章将详细...
涵盖更多内容,列举了大量典型实例具有超强的实用性,另外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》各篇独立,适合读者全面学习或对部分内容重点学习。 读者对象 有Java基础,想进一步...
本篇文章将全面解析Java中的乱码处理方法,涵盖纯Java代码、Servlet、JSP以及EJB类的解决方案,帮助开发者有效解决这一问题。 首先,理解字符编码的基础知识至关重要。在计算机世界里,字符与数字之间的映射关系...
在Web开发过程中,特别是在使用Java进行后端开发时,经常遇到的一个问题是中文字符或非ASCII字符在URL参数中的乱码问题。这主要是因为客户端浏览器与服务器之间可能使用的字符集不同导致的。本文将详细介绍如何通过`...
在Web项目开发中,中文乱码是一个常见的问题,尤其是在处理用户输入、文件读写或者页面显示时。本文将深入探讨如何解决这些问题,帮助开发者更好地处理中文字符。 首先,当表单正常提交后,页面显示出乱码,这通常...