Android中读取中文txt


前几天在实验室开发项目,Android端通过局域网ip访问实验室一台机器,实现Android上对json的解析,由于过两天要回家,实验室外网又访问不了,所以只能自己做一个伪服务器端,就是读取本地一个有json代码的txt文件,假装成一个服务器返回的字符串。但是中文显示都是乱码。代码如下:

InputStream is = context.getResources().openRawResource(R.raw.json);
  BufferedReader br = new BufferedReader(new InputStreamReader(is));
  StringBuilder sb = new StringBuilder();
 
  String str = "";
  try {
   str = br.readLine();
   while(str != null)
   {
    sb.append(str);
    str = br.readLine();
   }
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  response = sb.toString();

 

由于Java是用UNICODE编码,一个中文占两个字节,inputstream读取的是字节流,所以当然会乱码。换成下面一种方法就可以了。

  InputStream is = context.getResources().openRawResource(R.raw.json);
  ByteArrayBuffer bb = new ByteArrayBuffer(500);
  int current=0;
  String str = "";
  try {
   while((current = is.read())!=-1)
   {
    bb.append(current);
   }
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  response = EncodingUtils.getString(bb.toByteArray(),"GB2312"); 

测试代码,命名很不规范,请见谅。代码,由于不了解输入输出流,只能按自己的理解,就是inputstream文件读入一个输入流,并用current记录字节数,然后BtyeArrayBuffer::append(int)从输入流获取刚才读取的字节流,再按GB2312编码。得到中文String.

相关内容