高手才进来,关于java IO类读取并打印中文字符的问题我生成一个文本,上面写着四行中文字,注意是四行,我
爱
学
习然后用editplus另存为utf-8格式, 之后写了如下代码来测试import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;public class ReadFile {
public static void main(String[] args) throws IOException{
File file = new File("E:\\DEV\\EnglishReviewer\\key_tmp.txt");
FileReader fileReader = new FileReader(file);
String sx = fileReader.getEncoding();
System.out.println("Coding:"+sx); //1.这里显示 Coding: Cp1252
FileInputStream fileInputStream = new FileInputStream(file);
InputStreamReader inputStramReader = new InputStreamReader(fileInputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStramReader);
String fileContent = "";
String line = null;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line); //2.这里打印出来的是乱码
}
}
}
我十分想知道, 为什么coding是cp1251, 第二个,怎样才能打印出正常的中文呢? 这两个问题,我几天还没搞定,望高人指点。谢谢
爱
学
习然后用editplus另存为utf-8格式, 之后写了如下代码来测试import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;public class ReadFile {
public static void main(String[] args) throws IOException{
File file = new File("E:\\DEV\\EnglishReviewer\\key_tmp.txt");
FileReader fileReader = new FileReader(file);
String sx = fileReader.getEncoding();
System.out.println("Coding:"+sx); //1.这里显示 Coding: Cp1252
FileInputStream fileInputStream = new FileInputStream(file);
InputStreamReader inputStramReader = new InputStreamReader(fileInputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStramReader);
String fileContent = "";
String line = null;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line); //2.这里打印出来的是乱码
}
}
}
我十分想知道, 为什么coding是cp1251, 第二个,怎样才能打印出正常的中文呢? 这两个问题,我几天还没搞定,望高人指点。谢谢
在Windows下,如果你用记事本之类的保存文件,会在文件开头出现一个文件编码的标识
你去搜索BOM就知道了。
你的代码没有问题,你可以用记事本编辑文件,使用默认的字符集,一般是GBK
然后修改你的代码看看。我用的textpad编辑,另存为UTF-8的,也顺利通过了。
这个应该可以,试试
我前几天也遇到过类似的问题
修改下编码试试
new String(String.getBytes("iso-8859-1"),"gbk")
紫竹大哥一语中的。bom是也
我日文OS默认MS932,就算代码写了转码转出来的"gbk"字符,os不支持照样乱码
lz的os应该支持的,否则他记事本里没法打中文
老紫竹说得对。
你用其他的文本软件试试看吧。或者直接用程序向文件里面写也行。