android 中文乱码的分析与总结

本文主要探讨了在Android应用中出现中文乱码的原因,包括GET和POST请求方式下可能出现的问题。针对GET方式,重点指出浏览器编码与服务器解码字符集不一致导致的乱码,解决方法是在Tomcat的配置文件中设置URIEncoding=UTF-8。而对于POST请求,可以通过在Servlet或Filter中设置request.setCharacterEncoding("UTF-8")来统一编码格式。同时,文章还分析了由于编码不同导致的‘??’问题,并提出了解决方案,即使用正确的字符串转换方式避免数据丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.浏览器访请求服务器主要有2中方式,post和get
get方式:从浏览器上直接敲地址,最大特点就是参数直接跟在地址后面。
post:已提交表单的形式。APP主要是post请求。


2.访问过程与访问:
get:
浏览器中输入地址 –> 浏览器对中文进行编码 –>发送到服务器 ->服务器进行解码
如果浏览器编码和服务器解码用的字符集不一致就会发生乱码问题。
单纯设置request.setCharacterEncoding("UTF-8");是没有用的,所以我们把默认的iso-8859-1编码改成UTF-8,在TOMCAT的配置文件的server.xml中添加URIEncoding=UTF-8
post:表单提交,在Servlet或者Filter中设置request.setCharacterEncoding("UTF-8");就能很好的统一格式.


3.有时候输入文字之后,通过服务器取出来,会存在“??”的文字

对于gbk这种编码而言,中文所对应的字节数是2byte;而在utf-8中,中文则是对应三个字节。于是在输入奇数个汉字时,最后一个字节在gbk中则无法编译。譬如说utf-8编码的3个字,编码是123|456|789 ,在传输到服务器中时,系统认为这9个字节是gbk编码,于是就变成了12|34|56|78|9。后面多出的一个字节不能够编译成汉字,此时常用“?”来代替。于是最后一个byte变成了“?”(ASCII码为63)。这时再将它转成utf-8时,则变成了123|456|78?。这个时候第三个字也不能正确地读取了,于是出现了(两个问号)。
正确的方式应该是
String msg_client = new String(bb, "utf-8"); 去构建
而不是通过bufferedreader一行一行的读取
String msg_client = new String(msg_client1.getBytes("gbk"), "utf-8");


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值