http通信get,post 中文乱码问题原因分析

来源:互联网 发布:linux可执行文件.o 编辑:程序博客网 时间:2024/05/17 06:17

转载请注明出处,谢谢!http://blog.csdn.net/wei_chong_chong/article/details/51152823

以前写过一些解决中文乱码的博客。但是以前只给了解决方案,并没有分析原因。

今天来分析一下乱码的原因:


1.通过浏览器给后台提交数据的时候,默认使用的是ISO-8859-1提交的

所以在Servlet中收到中文数据时要做编码转换。

把字符串按照iso-8859-1转换为字节,然后把字节转换为utf-8

name = new String(name.getVBytes("iso-8859-1","utf-8"));

同时需要设置返回接收的文本类型(响应头的文本类型)response.setContentType("text/html;charset=utf-8")[如果没有这个,控制台可以输出正确中文,但是响应界面还是会乱码(Servlet界面)]

get请求

中文数据

浏览器会对编码做转换,转换为服务器可识别的编码

所以客户端app通过get请求给服务端发送数据时需要对中文做转码操作

URLEncoder.encode(string,"utf-8")

post请求就不需要这一步转码操作了{这个跟Android系统有关,android系统默认按照utf-8编码发送数据,而get方式是通过url发数据的}

0 0
原创粉丝点击