转载请注明出处,谢谢!
以前写过一些解决中文乱码的博客。但是以前只给了解决方案,并没有分析原因。
今天来分析一下乱码的原因:
1.通过浏览器给后台提交数据的时候,默认使用的是ISO-8859-1提交的
所以在Servlet中收到中文数据时要做编码转换。
把字符串按照iso-8859-1转换为字节,然后把字节转换为utf-8
name = new String(name.getVBytes("iso-8859-1","utf-8"));[如果没有这个,控制台可以输出正确中文,但是响应界面还是会乱码(Servlet界面)]
同时需要设置返回接收的文本类型(响应头的文本类型)response.setContentType("text/html;charset=utf-8")
get请求
中文数据
浏览器会对编码做转换,转换为服务器可识别的编码
所以客户端app通过get请求给服务端发送数据时需要对中文做转码操作
URLEncoder.encode(string,"utf-8")
post请求就不需要这一步转码操作了{这个跟Android系统有关,android系统默认按照utf-8编码发送数据,而get方式是通过url发数据的}
时间: 2024-09-28 07:23:42