//显示到控件上
textView_1.setText(strResult);
………………省略部分代码………………
代码中关键代码是,new String(b,“utf-8”),将byte数组转换成UTF-8格式的字符串,结果如图10-17所示。
当改成new String(b,“gb2312”)时得到结果如图10-18所示。

如何避免中文乱码问题,首先,不要频繁转码和漫无目的转码,这样转来转去最后自己也不知道转到哪里去了,其次,尽量使客户端程序的编码和服务器编码统一,再次避免用字节的方式去读取中文和操作中文字符串,因为一个汉字占两个字节,稍不注意开发过程中就会出现读取一个字节,造成读取了半个字,就会出现乱码。
2.第二种情况
中文汉字中出现少部分中文乱码。这种现象看起来很怪异,往往在开发过程中,读者都有可能这样操作了,但没有发现。这种现象是怎么造成的呢?先看例子程序。
实例:
读取文件的核心代码如下(为了测试多一些的汉字,本例将把很多汉字写在test.txt里放在assets文件夹下):
…………………省略部分代码………………
inputStream = this.getAssets().open(“test.txt”);
byte buffer[] = new byte[100];
StringBuffer sb = new StringBuffer();
int i = 0;
while ((i = inputStream.read(buffer)) != -1) {
sb.append(new String(buffer, 0, i));
}
textView_1.setText(sb.toString());
…………………省略部分代码………………
由上述代码产生的效果如图10-19所示。
部分乱码的现象出现了,原因我先不讲,先改动代码再看看效果。把byte buffer[] = new byte[100]改成byte buffer[] = new byte[inputStream.available()],运行后得到的效果如图10-20所示。
思考一下:100和inputStream.available()的区别,就会出现中文部分乱码的问题?原因是有可能在读取100个字节的时候正好遇到一个汉字的前半个字节,后100个字节的第一位置的字节也是这个字的后半个字节,半个字节是汉字吗?这样当然会出现乱码了。把字节的数组直接设置成输入流的长度,在读取的时候,一次性读取,那么就不会出现所谓的半个字的现象,当然也不会出现乱码的问题了。

还有一个解决办法,就是不以字节的方式读取文件,以字符的方式读取,一个字符装一个汉字是合法的,看一下代码
…………………省略部分代码………………
inputStream = this.getAssets().open(“test.txt”);
StringBuffer sb = new StringBuffer();
InputStreamReader isr=new InputStreamReader(inputStream);
char buf[] = new char[20];
int nBufLen = isr.read(buf);
while(nBufLen!=-1){
sb.append(new String(buf, 0, nBufLen));
nBufLen = isr.read(buf);
}
textView_1.setText(sb.toString());
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
最后
由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
料**,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。
本文介绍了在Android开发中遇到中文乱码问题的两种常见情况,包括频繁转码导致的混乱以及字节读取时的半个字节问题。作者提供了统一编码、字符方式读取文件等解决方案,并分享了学习资源,包括完整的Android开发学习资料包和高级架构资料。
9814

被折叠的 条评论
为什么被折叠?



