转自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中的Bmp图形格式(ALPHA_8,ARGB_4444,ARGB_8888,RGB_565)
  2. Android 10 创建文件失败
  3. Android Logcat 直接输出JSON格式的数据
  4. Android_判断文件是否存在并创建代码
  5. Android 项目打包成apk文件
  6. Android从远程服务器下载文件到本地sd卡中
  7. Android文件访问权限问题

随机推荐

  1. Notification 通知栏的使用
  2. [转]Android(安卓)Studio的logcat窗口被
  3. Android(安卓)weixin service
  4. android onTouchEvent 左右手势滑动事件
  5. How To Backup Your Android(安卓)Phone
  6. How to Install apk to Android(安卓)Dev
  7. Android使用图片资源
  8. android中,如果使用imageButton可以在draw
  9. Windows下修改android 模拟机 hosts文件
  10. Android实现简单水波纹效果