android拨打电话乱码,Android 中文乱码问题 | 阿达基站路测的天空

从SDCard保存的txt文件读取中文到android系统中会出现乱码问题,如何解决这个乱码问题,网上有不少解答方法,譬如说利用String temp1 =EncodingUtils.getString(strLine.getBytes(),"GB2312"); 但并非对所有的情况都适用,解决乱码问题首先要明白为什么会乱码。究其原因,是因为txt文件在win系统上保存时默认为ANSI格式,而android目前只支持UTF-8编码,因此将txt文件的中文读入android系统中会产生乱码。也有人说直接将txt另存为UTF-8编码格式来解决乱码问题,但这种方法指标不治本,不能要求用户手动去更改格式,客户第一嘛。因此还是需要想办法在程序中进行处理。

以下做了一些编码格式的测试:

测试文本: 122.11196,29.90573,北仑固废厂 测试代码段:

reader=new BufferedReader(new FileReader(filename));

strLine=reader.readLine() ;

String temp1 = EncodingUtils.getString(strLine.getBytes(),”GB2312″);

String temp2 = EncodingUtils.getString(strLine.getBytes(“utf-8″),”utf-8″);

String temp3 = EncodingUtils.getString(strLine.getBytes(),”utf-8″);

将文件存成 Unicode 格式

06beb01a139e1e6adabda16b4262898a.png

将文件存成utf-8 格式

4d4bb2a028ddf14b32deaa25619caa18.png

这种方式能得到非乱码的中文显示,但对于 utf-8 格式下取得的经纬度数字利用double lon = Double.parseDouble(lat); 报错 NumberFormatException,原因可能是 parseDouble(lat)方法不能处理存成utf-8格式的带标点小数。 将文件 存成 ANSI 格式

3ad1bb1d61fb5f8c711c589d69f28fc7.png

将代码改为:

reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename),”GB2312″));

strLine=reader.readLine() ;

String temp1 = EncodingUtils.getString(strLine.getBytes(),”GB2312″);

String temp2 = EncodingUtils.getString(strLine.getBytes(“utf-8″),”utf-8″);

String temp3 = EncodingUtils.getString(strLine.getBytes(),”utf-8″);

7986109600e70504d0141dcfb32f663c.png

即解决了中文乱码问题,又解决了Double.parseDouble(lat)报错问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值