http://blog.csdn.net/liaoci/article/details/7176268#
1.读取中文文件乱码解决方法
-
package com.apj.conv;
-
import java.io.BufferedInputStream;
-
import java.io.BufferedReader;
-
import java.io.File;
-
import java.io.FileInputStream;
-
import java.io.FileNotFoundException;
-
import java.io.IOException;
-
import java.io.InputStreamReader;
-
import android.app.Activity;
-
import android.os.Bundle;
-
import android.os.Environment;
-
import android.widget.TextView;
-
public class ConverActivity extends Activity {
-
private TextView textview ;
- @Override
-
public void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- textview = (TextView) findViewById(R.id.lrctext);
-
System.out.println("===================convertCodeAndGetText begin=================== ");
- ///获得SDCard中文件的路径
- String path = Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator ;
-
String tochinese = convertCodeAndGetText(path+"a.txt");
- System.out.println(tochinese);
-
System.out.println("===================cconvertCodeAndGetText end===================");
- textview.setText(tochinese);
- }
- public String convertCodeAndGetText(String str_filepath) {// ת��
-
File file = new File(str_filepath);
- BufferedReader reader;
-
String text = "";
-
try {
-
FileInputStream fis = new FileInputStream(file);
-
BufferedInputStream in = new BufferedInputStream(fis);
-
in.mark(4);
-
byte[] first3bytes = new byte[3];
- in.read(first3bytes);
- in.reset();
- if (first3bytes[0] == (byte) 0xEF && first3bytes[1] == (byte) 0xBB
- && first3bytes[2] == (byte) 0xBF) {// utf-8
-
reader = new BufferedReader(new InputStreamReader(in, "utf-8"));
- } else if (first3bytes[0] == (byte) 0xFF
-
&& first3bytes[1] == (byte) 0xFE) {
-
reader = new BufferedReader(
-
new InputStreamReader(in, "unicode"));
- } else if (first3bytes[0] == (byte) 0xFE
-
&& first3bytes[1] == (byte) 0xFF) {
-
reader = new BufferedReader(new InputStreamReader(in,
-
"utf-16be"));
- } else if (first3bytes[0] == (byte) 0xFF
-
&& first3bytes[1] == (byte) 0xFF) {
-
reader = new BufferedReader(new InputStreamReader(in,
-
"utf-16le"));
-
} else {
-
reader = new BufferedReader(new InputStreamReader(in, "GBK"));
- }
- String str = reader.readLine();
-
while (str != null) {
-
text = text + str + "\n";
- str = reader.readLine();
- }
- reader.close();
-
} catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
-
} catch (IOException e) {
- e.printStackTrace();
- }
-
return text;
- }