日期:2014-05-18  浏览次数:20671 次

关于以数字结尾的中文字符串乱码问题
我在保存txt文件的时候出现怪异的情况:new String(" 关键字1".getBytes(),"utf-8" ) ,关键字1就会变成" 关键??" 这样的乱码,当其他汉字跟数字结合保存的时候就没发现这种情况,这是怎么回事?有人知道,告诉我呗

------解决方案--------------------
Java code
new String("关键字1".getBytes(), "gbk");

------解决方案--------------------
问题解决了,是我读取文件的时候编码上有问题
总结一下:用
FileReader fileread=new FileReader(file);
BufferedReader bufread=new BufferedReader(fileread);
while((read=bufread.readLine())!=null)
{
readStr=readStr+read;
}
这种方式读取以utf-8保存的文件,部分中文会乱码
所以不推荐
Reader reader = null;
String str = "";
char[] c = new char[1024];
try {
System.out.println("以字符为单位读取文件内容,一次读一个字节:");
// 一次读一个字符
reader = new InputStreamReader(new FileInputStream(file),"utf-8");
int tempchar,i=0;
while ((tempchar = reader.read()) != -1){
//对于windows下,\r\n这两个字符在一起时,表示一个换行。
//但如果这两个字符分开显示时,会换两次行。
//因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
if (((char)tempchar) != '\r'){
System.out.print((char)tempchar);
c[i]=(char)tempchar;
}
i++;
}
str = new String(c);
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
这个是好方法。切记要加reader = new InputStreamReader(new FileInputStream(file),"utf-8");这句话