想哪就说哪啦,有不到位的地方请理解一下,就是自己的日常总结
浏览器编码参数时用的编码方案: 主要根据jsp页面的pageEncoding参数,可以在页面上右键点击然后选择编码来查看是什么编码
如pageEncoding是gb2312 则汉字: 不是=%B2%BB%CA%C7
gb2312字符集中是以双字节编码的
其中汉字"不"用十六进制表示为0xB2BB
"是"用十六进制表示为0xCAC7 对应在gb2312字符集中的这两个汉字中的数字编码,
如pageEncoding是utf-8 则汉字: 不是=%E4%B8%8D%E6%98%AF
utf-8字符集中是用三个字节表示一个汉字的
其中汉字"不"用十六进制表示为0xE4B88D
"是"用十六进制表示为0xE698AF 对应在utf-8字符集中的这两个汉字中的数字编码,
默认会以ISO-8859-1对汉字编码,如果页面上写的是这个,肯定会乱码
发生请求时 浏览器把参数在对应字符集的编码数字表示形式发送到服务器
若想在服务器端正确定出现汉字,想想要怎么办才行呢
1 首先要清楚知道客户端是以什么编码形式把数据发过来的,我好把发过来的数字在字符集中找到它对应的汉字啊
2 服务器程序以什么样的编码形式对发过来的汉字认识它,就是服务器如何识别发过来的是什么东西,
如服务器接收到一段数据name=%E4%B8%8D%E6%98%AF 服务器若是以gb2312来认识它的话就是三个汉字0xE4B8 0x8DE6 0x98AF,
当它在gb2312字符集找这三个对应
的汉字是什么时,就会找到别的字符啦,这时就会出现你不想看到的数据 “涓??”
服务器若是以utf-8来认识它的话就是两个汉字0xE4B88D 0xE698AF,当它在utf-8字符集找这两个对应
的汉字是什么时,就会找到正确的汉字“不是”
tomcat处理请求的编码方式
post请求是 tomcat以你设置的 request.setCharacterEncoding("gb2312") 来认识发来的数据,这时只需要确保页面发来数据的编码和这个一样就行了;
get方式和url后面直接跟参数时 会以ISO-8859-1来认识数据 编码成传过来的数字在iso-8859-1中对应的字符,是中文的话都会乱,
这时用 byte[] byte = request.getParameter("us").getBytes("iso-8859-1") 先还原成原来的数字形式(也就是原来的字节顺序)再用你页面的编码用
new String(byte,"gb2312")来重新找到在gb2312字符集对就的字符(用两个字节一组来找) 这样汉字就正确显示了
当使用一些js框架时,用ajax发送请求时框架会对传来的参数(不管是直接跟在url后面的还是以对象形式传来的{name:'不是'})
都会用encodeURIComponent
用utf-8编码方式对参数编码,和上文所说的浏览器编码一样,不过浏览器用你自己指定的来编码,encodeURIComponent默认会用utf-8来编码
所以解决ajax传数据乱码的方式有两个:
1 客户端以utf-8来编码,后台就也用utf-8来解码, request.setCharacterEncoding("utf-8")就可以正常 显示 tomcat什么时候以utf-8解码呢,
当请求是post时,所有ajax请求方式设为post时不乱
2 对要传的汉字两次编码,一:修改源码,找到发送请求时的编码encodeURIComponent那 对编码后的结果再encodeURIComponent 即
e = encodeURIComponent;result = e(e("不是"));二 或在写ajax时自己把参数先encodeURIComponent一次;,
这样传过去的就是英文字母的编码形式 到tomcat时不管请求是post还是get方式,这时tomcat请会把传来的字节解码成英文形式,而这个
英文形式正是对汉字以utf-8编码后的表示形式,此时再用java.net.Decoder.decoder以utf-8形式解码一下,汉字又重新回来了
只能理解到这了,后台和数据库传递数据时也类似,请各位自己想一下自己的实践过程,可以补充在楼下,有什么不对的地方请指出
分享到:
相关推荐
### Java Web 开发中解决乱码问题的全面指南 #### 一、乱码问题概述 在Java Web开发过程中,乱码问题是开发者经常会遇到的问题之一。它通常发生在处理含有中文或其他非ASCII字符的数据时。本篇文章将详细介绍在...
Java Web程序开发中字符乱码的原因与解决办法 字符乱码问题是Java Web程序开发过程中经常遇到的一个问题,它会对用户界面的友好性以及信息的准确传达造成很大的影响。为了解决这个问题,我们首先要了解字符集和字符...
在Java Web开发中,中文乱码问题一直是开发人员面临的常见问题之一。中文乱码通常是由于在字符编码转换过程中,字符集不一致或设置不当所导致。为了解决这一问题,首先需要了解Java Web工程字符编码的基本理论,包括...
【Java Web开发中的乱码问题】在开发Java Web应用程序时,...通过理解各种编码方式,分析乱码产生的原因,并结合实际情况采取相应的解决策略,可以有效地解决Java Web开发中的中文乱码问题,提高应用程序的用户体验。
从介绍java常用字符编码集入手,详细分析了在java Web开发中产生中文乱码的原因,并针对原因提出了可行性解决方法。
在Java Web开发中,中文乱码问题是一个常见的困扰,尤其对于使用Servlet和JSP技术的开发者来说。乱码问题的产生主要源于字符编码的不一致性,即在Web组件之间、Web组件与浏览器、以及Web组件与数据库之间的字符集...
Java Web开发中的中文乱码问题是一个常见的困扰,尤其是在处理用户输入和数据显示时。问题的核心在于不同组件和环境之间编码方式的不一致。本文将深入探讨Java Web的编码机制,JSP运行原理,以及如何解决常见的乱码...
在Java Web开发中,乱码问题是一个常见的挑战,它涉及到字符编码、数据传输以及环境配置等多个方面。本文将深入探讨这些问题及其解决方案。 首先,我们需要理解什么是乱码。乱码通常出现在字符集不匹配的情况下,即...
### Java Web 开发中的中文乱码问题及其解决方案 在Java Web开发过程中,中文乱码问题是一种常见的技术难题,尤其在处理客户端与服务器间的数据交互时更为突出。本文将详细介绍Java Web开发中出现乱码的原因,并...
处理 Java+jsp+mysql 开发 web 项目中文乱码问题 在 Java+jsp+mysql 开发 web 项目中,中文乱码问题是一个常见的问题,影响着项目的正常运行。下面我们将从四个方面来解决中文乱码问题: 一、Jsp 输出中文的乱码...
### Java Web开发中常见的中文乱码问题解析 在Java Web开发过程中,中文乱码问题是开发者经常遇到的一个挑战。这些问题主要源于Java默认的Unicode编码与HTML页面及表单默认的Latin-1编码之间的不兼容,以及在不同的...
在开发Web项目时,乱码问题常常困扰着开发者,它涉及到字符编码的处理,这是Web应用中的一个常见但至关重要的问题。本方案提供了一个简洁有效的解决方法,通过一个Java文件和在`web.xml`配置文件中的简单设置,可以...
Java Web项目开发中,中文乱码问题是一个常见但棘手的困扰,主要涉及到字符编码和解码的过程。在计算机系统中,数据以二进制形式存储,中文字符需要经过编码转换为字节序列才能存储。编码是将字符转化为字节的过程,...
本文将深入探讨几种解决Java中中文乱码问题的方法,并以MyEclipse为开发环境,结合实际示例进行讲解。 1. 文件读写中的乱码: 当Java程序读取或写入包含中文字符的文件时,需要设置正确的字符编码。例如,使用`...
JAVA 中文乱码问题是开发过程中常见的问题之一,解决这个问题需要了解乱码产生的原因,然后对症下药。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。 1. 以 POST 方法提交的表单数据中有中文字符 在...
Java避免UTF-8的csv文件打开中文出现乱码的方法 在Java中,避免UTF-8的csv文件打开中文出现乱码的方法是非常重要的。csv文件是 comma separated values 的缩写,常用于数据交换和导入导出操作。然而,在Java中读取...
### Java中文乱码分析 #### 一、概述 在Java Web开发中,中文乱码问题是一个常见的技术难题,尤其在处理HTTP...通过上述分析和建议,我们可以有效地解决Java Web应用中的中文乱码问题,提高系统的稳定性和用户体验。