java乱码分析
2015-06-26 00:00
357 查看
web项目乱码问题根本原因
http请求无非就是get和post请求,分下面四种场景
1、URL方式直接访问。(get请求)
2、页面链接。(get请求)
3、表单get提交(get请求)
4、表单post提交(post请求)
参数传递有两种,一种是通过url传参,一种是通过data传参。
1.表单get提交其实就是将参数拼接到url后面,如果是中文必须要转换为ascii再拼接提交,例如:"我 爱 你" 转换为 "%E6%88%91%20%E7%88%B1%20%E4%BD%A0",也就是用encodeURI函数编码
2.post提交表单时,参数通过date传递,传递时根据请求头contentType类型编码处理再提交到服务器。
3.值得注意的一个坑:用ajax.post提交数据时候中文乱码
a)当含有中文的参数拼接在post的url后面会乱码,中文参数必须以js对象放data区
b)当含有中文的参数以序列化的形式放data区会中文乱码,必须以js对象的形式放data区(以序列化的形式ajax会把参数拼接到url后面jquery是这样的)
js编码函数区别
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应j3个java解码函数:unescape,decodeURI,decodeURIComponent
附带escape,decodeURI,decodeURIComponent之间的区别
escape对0-255以外的unicode值进行编码时输出%u****格式,
其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
web.xml中配置的过滤器只能针对post 请求的数据进行编码转换,对于get 提交的数据乱码是处理 不了的.
http请求无非就是get和post请求,分下面四种场景
1、URL方式直接访问。(get请求)
2、页面链接。(get请求)
3、表单get提交(get请求)
4、表单post提交(post请求)
参数传递有两种,一种是通过url传参,一种是通过data传参。
1.表单get提交其实就是将参数拼接到url后面,如果是中文必须要转换为ascii再拼接提交,例如:"我 爱 你" 转换为 "%E6%88%91%20%E7%88%B1%20%E4%BD%A0",也就是用encodeURI函数编码
2.post提交表单时,参数通过date传递,传递时根据请求头contentType类型编码处理再提交到服务器。
3.值得注意的一个坑:用ajax.post提交数据时候中文乱码
a)当含有中文的参数拼接在post的url后面会乱码,中文参数必须以js对象放data区
b)当含有中文的参数以序列化的形式放data区会中文乱码,必须以js对象的形式放data区(以序列化的形式ajax会把参数拼接到url后面jquery是这样的)
js编码函数区别
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应j3个java解码函数:unescape,decodeURI,decodeURIComponent
附带escape,decodeURI,decodeURIComponent之间的区别
escape对0-255以外的unicode值进行编码时输出%u****格式,
其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
web.xml中配置的过滤器只能针对post 请求的数据进行编码转换,对于get 提交的数据乱码是处理 不了的.
相关文章推荐
- maven 依赖模块 eclipse
- myeclipse10搭建maven环境
- maven创建Java项目和web项目
- java重载和重写
- java中会存在内存泄漏吗,请简单描述?
- 2015062506 - jdk7.8源码下载地址
- Java异常
- 使用RobotFramework的DataBaseLibrary(Java实现)
- 使用RobotFramework的DataBaseLibrary(Java实现)
- java数据库连接池技术浅析
- java虚拟机加载class的顺序
- java学习日记
- JAVA反射机制的学习
- 使用RobotFramework的JavaRemoteLibrary
- java反射机制的实现原理
- 使用RobotFramework的JavaRemoteLibrary
- java get/post方法
- java冒泡排序
- Java基础之集合
- java将Unicode编码转换为汉字