关于FileReader读取文本文件数据含有乱码的问题,请看以下两个片段的代码:第一、 FileReader fr = new FileReader("C:\\带有中文的文件.txt");
int i;
while( (i = fr.read()) != -1) {
System.out.print((char)i);
}
fr.close();执行完以上代码之后,把文本文件里的内容打印到屏幕上有中文乱码的问题。再看以下代码:
第二、 FileReader fr = new FileReader("C:\\带有中文的文件.txt");
FileWriter fw = new FileWriter("D:\\复制后的文件.txt");
int i;
while( (i = fr.read()) != -1) {
fw.write(i);
System.out.print((char)i);
}
fr.close();
fw.close();执行完以上代码之后文件被成功复制,复制后的文件并没有乱码出现,中文字符正常显示。我的问题是:
使用同样的FileWriter请问为什么第一段代码打印到控制台的时候出现乱码,而复制文件却不会出现乱码?
我已经知道如何解决这个乱码问题,我现在想知道的是为什么,请大家从编码原理的角度来解释这个问题,谢谢大家!
int i;
while( (i = fr.read()) != -1) {
System.out.print((char)i);
}
fr.close();执行完以上代码之后,把文本文件里的内容打印到屏幕上有中文乱码的问题。再看以下代码:
第二、 FileReader fr = new FileReader("C:\\带有中文的文件.txt");
FileWriter fw = new FileWriter("D:\\复制后的文件.txt");
int i;
while( (i = fr.read()) != -1) {
fw.write(i);
System.out.print((char)i);
}
fr.close();
fw.close();执行完以上代码之后文件被成功复制,复制后的文件并没有乱码出现,中文字符正常显示。我的问题是:
使用同样的FileWriter请问为什么第一段代码打印到控制台的时候出现乱码,而复制文件却不会出现乱码?
我已经知道如何解决这个乱码问题,我现在想知道的是为什么,请大家从编码原理的角度来解释这个问题,谢谢大家!
解决方案 »
- 两个double型变量相乘和相除的问题
- 如何从request中取得servletcontext?
- 对Thinking in Java中解释的 toString()方法自动调用的疑惑
- 关于 JFrame 改变大小的问题 (Jfreechart 相关)
- j2sdk1.4.2_05国内有没有下载的?知道的给个地址
- 如何提取一个文件的所有父目录的名称,我使用fileString.split("\\"),不行呀
- 关于SOCKET编程(编译成功后的问题)
- 我用JBuilder连接Interbase为什么不行,是不是没有驱动程序,那怎么办?
- Socket传输中文字符处理!!高分求救
- 大佬们,mysql装不上,好像需要什么插件。谁有啊
- 请问java可以用为什么javac不行~
- 下载的java源程序导入eclipse问题
写文件你只是把字节copy过去而已
lz的代码我也试过,用gbk编码的文件打印出来是没有问题的,
utf8编码的才会乱码
这个说法正确。
windwos的编码是GBK。你读文件,是GBK,写文件的时候也是GBK。