想哪就说哪啦,有不到位的地方请理解一下,就是自己的日常总结
浏览器编码参数时用的编码方案: 主要根据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开发中Jsp存储读取MySQL数据中文乱码的问题
Java Web程序开发中字符乱码的原因与解决办法.pdf
Java WEB开发中的中文乱码问题解决方法.pdf
从介绍java常用字符编码集入手,详细分析了在java Web开发中产生中文乱码的原因,并针对原因提出了可行性解决方法。
解决在javaweb开发的过程中遇到的乱码问题,纯属个人在学习中的总结。
在利用JSP/Servlet技术开发java Web应用程序的时候,经常会遇到中文乱码问题,本文首先介绍了Web应用中常见的编码方式,然后分析了J2EE平台下Web应用中文乱码产生的原因,并针对不同情况给出了解决方法。
在利用Servlet/JSP技术开发java Web应用程序的时候,不可避免的会遇到中文乱码问题,本文首先介绍了Web应用中常用的编码方式,然后分析了J2EE平台下Web应用中文乱码问题产生的原因,并在此基础上针对不同情况提出了解决...
很好用,很全面的解决java Web开发的解决中文乱码的文档
介绍解决java web 开发解决中文乱码问题的一般方法
在进行java Web开发的过程中,由于采用的编码和解码的方式不统一,经常会出现乱码问题。文中首先介绍了java Web的编码机制及JSP运行原理,继而阐述了在开发过程中常见的乱码问题及解决方案,最后提出采用过滤器重写...
8.6 JSP标签 8.7 JSP的中文乱码问题 8.8 思考与实践 第9章 JavaBean在JSP中的应用 9.1 JavaBean简介 9.2 JavaBean的属性 9.3 JavaBean在JSP中的应用 9.4 JSP开发模式 9.5 ...
解决web项目中出现的乱码问题,很方便,只要一个java文件,同时在web.xml文件中配置该java文件就OK了 ,很方便的
Java Web项目开发中的中文乱码问题与对策.pdf
关于Java Web技术开发中中文乱码问题的深入探讨
Java Web中文显示乱码问题的分析与解决方案
java web开发中服务器推送pushlet.jar解决中文乱码
Jsp输出中文的乱码问题,获取表单提交的数据时的中文乱码问题,url中的中文问题,数据库中采取的编码方式不同于utf-8怎么办
此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...
在java Web应用开发中,软件开发人员最容易遇到的问题就是中文的乱码问题,其中最常见的有两种,JSP页面中文显示乱码和表单提交参数中文乱码。本文通过深入分析这两种中文乱码问题产生的原因,分别给出了对应的解决方案...
其实, Java 的文件存储/编译机制, JVM 的工作机制, 在实现中内部都采用了统一的 unicode 编码方式, 若目标平台解码方式不一致, 便会出现中文乱码(实际上不仅是中文, 多/单字符集都有可能出问题, 视目标平台而不同).