下面是我的源代码,我用了下面几种方式进行编辑,运行的结果都有乱码,我真是想不明白了,请大牛帮我看看。
第一种方式编译 E:\java\8>javac -encoding utf-8 TestFileReader.java
第二种方式编译 E:\java\8>javac -encoding gbk TestFileReader.java
第三种方式编译 E:\java\8>javac -encoding gb2312 TestFileReader.java
第四种方式编译 E:\java\8>javac -encoding iso-8859-1 TestFileReader.java
import java.io.*;
public class TestFileReader{
public static void main(String[] args){
FileReader fr = null;
try{
fr = new FileReader("e:\\java\\8\\TestFileReader.java");
}catch(FileNotFoundException e){
System.out.println("没有找到制定的文件!");
System.exit(-1);
}
int c = 0;//当前读取的字符
int num = 0;//读取的字符总数
try{
while((c=fr.read())!=-1){
System.out.print((char)c);
num ++;
}
System.out.println("读取的字符总数:" + num );
} catch(IOException e){
System.out.println("读取文件错误!");
System.exit(-1);
}
}
}
E:>javac -encoding gbk TestFileReader.java
E:>chcp
活动代码页: 936
由于不能发图片
我用的window7系统默认编码是GBK的 查出来的936是表示编码为GBK
如果是其他的你在网上找一下对应的编码,其实如果你不是用的英文系统的话,默认的编码肯定是支持中文的,编译的时候根本就不需要设置编码
我觉得你用国际标准的ISO-8859-1编译的话,文件编码格式要选成UTF-8.
试试inputstreamreader
fr = new FileReader("e:\java\8\TestFileReader.java");
下面加上 InputStreamReader isr=new InputStreamReader(fr,"utf-8");//高级流,需要导包
然后把下面的fr都替换成isr就好了最后别忘了 isr.close;