在安卓程序中,会出现中文乱码问题,经分析,原因为容器的固定大小会将一个中文字符拆开形成乱码。
比如:
(错误代码)
FileInputStream in = context.openFileInput("xxx.txt");
int len = 0;
byte[] buf = new byte[1024];
StringBuilder builder = new StringBuilder();
while((len = in.read(buf)) != -1){ //此时将中文拆开
builder.append(new String(buf, 0, len));
}
String result = builder.toString(); //此时存在乱码
(正确代码)
FileInputStream in = context.openFileInput("xxx.txt");
InputStreamReader reader = new InputStreamReader(in);
int len = 0;
char[] buf = new char[1024]; //用字符读取,不会拆开中文
StringBuilder builder = new StringBuilder();
while((len = reader.read(buf)) != -1){
builder.append(new String(buf, 0, len));
}
String result = builder.toString(); //此时不存在乱码
仅供参考