• 转载 http://blog.csdn.net/dengta_snowwhite/article/details/6418384


    从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)报错问题。

  • 相关阅读:
    greenplum日常维护手册
    Android UI界面基本属性 大全
    Listview 选项按下去黑了所有按钮的解决方法 ——android:cacheColorHint=“#00000000”
    【转】Android应用程序模块详解
    android退出有多个activity的应用
    启动模式"singleTask"和FLAG_ACTIVITY_NEW_TASK具有不同的行为!
    Android 按两次back键退出 效率最高版
    【转】跑马灯效果
    Sundy笔记__Git版本控制
    如果你想用对话框代替一个activity的话,可以设置activity的主题属性
  • 原文地址:https://www.cnblogs.com/umlzhang/p/3977858.html
Copyright © 2020-2023  润新知