android 中文乱码
来源:互联网 发布:淘宝复制宝贝到京东 编辑:程序博客网 时间:2024/05/12 09:08
以HttpPost方式向服务器上提交中文数据时,如果没有设置传输数据的编码类型,在服务端获取到的数据就会出现乱码。在涉及不同平台上的应用,我们尽量使用UTF-8编码格式传输中文数据.
如果服务器端还是受到乱码,那就是服务器端没有处理好转码导致的,直接交给服务器端改就行了,
上次出了个问题,服务器端一直推脱客户端的问题,可把我给整蒙了。
看了下,http://bashenmail.iteye.com/blog/509046 评论不错,特记录
result = new String(result.getBytes(),"UTF-8"); 和result.getBytes("utf-8")
厄,如果对字符编码没概念的话,解释起来很麻烦。
result.getBytes() 是 new String(byte[]) 的逆过程。
前面那个是 String->byte[] ,后面那个是 byte[] -> String.
在java运行时的时候,String与String是没有区别的都是以2字节的unicode的形式存在内存中,所谓编码,是针对把String转换成 byte[]而言的。比如我可以把 "abc" 通过 utf-8转换成了一串数据 A ,也可以通过gb2312转换成另一串数据 B,这个过程就是 String.getBytes(),比如 "abc".getBytes("utf-8")得到A , "abc".getBytes("gb2312")得到B。如果是"abc".getBytes(),就不知道用的什么编码了,这和平台相关。
那如何从A串或者 B串重新得到String呢,那就是 new String(A,"utf-8") 或者 new String(B,"gb2312")。因为A是从utf-8转换得到的,所以用utf-8转回String ,如果new String(A,"gb2312"), 那么其中的中文就是乱码。
当然gbk和utf-8的有小部分编码集合是一样的,所以英文字符,一般不管怎么转都可以歪打正着。
另外,因为网络传输肯定是用byte[]的,不可能直接把String对象给传过来,所以server想把某个字符串传给client之前,需要将他转成byte[] , 这中间就用了server指定的一种编码,client在收到这个 byte[]之后,就必须要采用和server相同的编码,把byte[]重新转换为String。这就是InputStreamReader需要指定一个编码的原因。
InputStreamReader作用就是在通过inputStream读到byte[]的同时,将byte[]用指定的编码,转换为 char[],也就是实际上的String.
说了一大堆,不知道这表达的你能不能明白
第一句话是错的,而且如果默认不是utf-8那么这就是乱码的一个原因。
- 彻底解决Android中文乱码
- 彻底解决Android中文乱码
- Android中文乱码问题解决
- android jni 中文乱码
- Android Socket 中文乱码
- Android 1.5 中文乱码
- Android中文乱码彻底解决
- android 中文乱码总结
- android 中文乱码总结
- Android中文乱码
- android 中文乱码
- android webservice 中文乱码
- Android中文乱码解决方法
- Android 中文乱码问题
- Android之中文乱码
- Android Studio 中文乱码
- android studio 中文乱码
- Android压缩中文乱码
- 利用monkey测试android,入门级用户可能遇见的错误及解决办法
- MentoHUST讲解教程(锐捷破解)
- 方块填数
- ARM中断向量表重定位到片外RAM方法
- 在局域网中共享打印机
- android 中文乱码
- Navicat 2003-can't connect to MYSQL server on 'localhost'(10061)
- hdu 3415 Max Sum of Max-K-sub-sequence(单调队列)
- windows server 2008 NTP授时服务
- hdu 1686 Oulipo(简单KMP)只不过比赛的时候用了string.一直超时,改成char就一遍AC,纠结。。。
- 【学习第一章】关于ANDROID的工具Monkey的使用
- Mybatis <collection> 标签使用。
- tomcat配置详解以及如何在tomcat中配置二个项目
- 食物链