转自http://blog.csdn.net/iplayvs2008/article/details/11484627


从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 格式


       

将文件存成utf-8 格式


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



 将代码改为:

    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");


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


更多相关文章

  1. Android系统权限和root权限
  2. Android(安卓)Java basic knowledge ---AIDL3
  3. Android(安卓)studio NDK开发
  4. Android中的Bmp图形格式(ALPHA_8,ARGB_4444,ARGB_8888,RGB_565)
  5. Android(安卓)studio JNI开发
  6. Android(OPhone) 学习笔记 - 地图(2)
  7. 关于Android(安卓)studio混淆遇到的问题
  8. Android中数据存储的几种方法
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android版本管理(git 和 repo)
  2. arcgis for android 学习 - (4) 了解mapV
  3. 用python开发android应用 【转载】
  4. android瀑布流,完美解决滑动过程中item位
  5. Android(安卓)Studio 预览-全屏
  6. Android实现>>>百度GPS定位
  7. Android视图的标签属性
  8. Android(安卓)Studio实现代码混淆 配置详
  9. Android(安卓)Studio 触摸屏事件
  10. 【Gradle】Android(安卓)Gradle 多项目构