一个本地的文本文件(含中文), 使用ultraEdit编辑的, 编码方式采用的默认(GBK). 文件显示正常.
现对文件进行内容复制, 代码如下:InputStream in = new FileInputStream("G:\\abc.txt");
InputStreamReader iReader = new InputStreamReader(in);
System.out.print(iReader.getEncoding());// 输出GBK
Reader reader = new BufferedReader(iReader);
...........OutputStream os = new FileOutputStream("G:\\def.txt");
Writer writer = new BufferedWriter(new OutputStreamWriter(os, iReader.getEncoding()));
...........得到的def.txt文件全是乱码.
InputStreamReader iReader = new InputStreamReader(in, "UTF-8"); 这句这样写就OK了.
可是我不明白, abc.txt就是GBK的显示正常, 我读入之后也是用GBK向def.txt中写的, 可为什么def.txt就是乱码了呢?
为何一定要在读入的时候先转码为UTF-8?求详解, 谢谢!!!!
现对文件进行内容复制, 代码如下:InputStream in = new FileInputStream("G:\\abc.txt");
InputStreamReader iReader = new InputStreamReader(in);
System.out.print(iReader.getEncoding());// 输出GBK
Reader reader = new BufferedReader(iReader);
...........OutputStream os = new FileOutputStream("G:\\def.txt");
Writer writer = new BufferedWriter(new OutputStreamWriter(os, iReader.getEncoding()));
...........得到的def.txt文件全是乱码.
InputStreamReader iReader = new InputStreamReader(in, "UTF-8"); 这句这样写就OK了.
可是我不明白, abc.txt就是GBK的显示正常, 我读入之后也是用GBK向def.txt中写的, 可为什么def.txt就是乱码了呢?
为何一定要在读入的时候先转码为UTF-8?求详解, 谢谢!!!!
解决方案 »
- java socket问题:server端启动后指定一个端口,当客户端连接后重新分配一个空闲端口进行通讯
- spring 问题
- 根据周数 请本周日期
- 刚学程序设计,关于利用MVC模式开发Java应用程序,想不通的,请指教!
- properties里如果有如下配置"mypath=c:/tmypath",":/t"就会变成个空格,怎么解决呢??
- [150分求助]spring+struts配置问题,给点建议也好,来者有分!!
- 我翻译了一片介绍Butler开源项目的文章,和大家共享!
- 跪求weblogic8方面的中文教程(电子版)
- 重分求一个能学习面向对象分析的JAVA例子.不要太大的
- Servlet/JSP可以使用Local Interface么?
- struts2项目打开首页面时就加载action
- spring如何以注解方式注入sqlMapClient
我推测唯一合理的解释是abc.txt其实是UTF-8编码的。
LZ可以查看abc.txt的二进制编码,看看是不是UTF-8编码的(UTF-8编码下中文一般3个字节)。