http通信get,post 中文乱码问题原因分析
2016-04-14 17:05
603 查看
转载请注明出处,谢谢!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发数据的}
以前写过一些解决中文乱码的博客。但是以前只给了解决方案,并没有分析原因。
今天来分析一下乱码的原因:
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发数据的}
相关文章推荐
- OkHTTp简单封装
- Android学习之使用HttpURLConnection下载文件
- TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节
- TCP/IP详解学习笔记(6)-UDP协议
- nginx网站开启https访问,http自动跳转到https
- TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute
- Android学习之使用HttpURLConnection上传单多个文件
- Picasso的基本用法及如何加载网络图片和本地图片
- TCP/IP详解之IP协议ARP协议和RARP协议
- TCP/IP详解学习笔记(2)-数据链路层
- Android学习之使用HttpURLConnection上传单个文件
- TCP/IP详解学习笔记(1)-基本概念
- Volley的网络请求实例
- HTTP协议
- 在https的tomcat环境中,使某些特殊的资源通过http来访问
- 网络数据包发送接收全过程
- epoll + 多线程实现并发网络连接处理
- iOS开发网络篇—发送GET和POST请求(使用NSURLSession)
- 使用virtualbox设置双网卡,桥接+内部网络
- 近期的安卓学习开发SOS APP的一些总结文档 (拨打电话 加载首页图片的异步代码 判断是否有网络代码)