您的位置:首页 > 编程语言 > Java开发

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 提交的数据乱码是处理 不了的.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: