A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Cfan_yang 中级黑马   /  2014-12-23 21:57  /  1324 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;
  2. public class DocReader {
  3.         public static void main(String args[]) throws IOException
  4.         {
  5.                 BufferedReader bufr =
  6.                                 new BufferedReader(new InputStreamReader(new FileInputStream("D:\\abc.txt"),"utf-8"));
  7.                 BufferedWriter bufw =
  8.                                 new BufferedWriter(new OutputStreamWriter(System.out));
  9.                 String line;
  10.                 while((line=bufr.readLine())!=null)
  11.                 {
  12.                         bufw.write(line);
  13.                         bufw.newLine();
  14.                         bufw.flush();
  15.                 }
  16.         }
  17. }
复制代码
d盘下的abc.txt为uft-8编码的文件。内容为 你好。
可是运行结果确是 ?你好。
求解。

3 个回复

倒序浏览
因为abc.txt为文本文件,它有固定的格式,不然的话应用软件怎么知道它是txt文件,而不是mp3 mp4文件,所以该文件除了本身含有内容数据外,还有固定的数据格式,txt文件开头是EF BB BF,所以这三个字节之后才会是你内容数据。故你读出的数据有乱码,也就是这三个字节捣的鬼。
回复 使用道具 举报
你读的时候 用的是UTF-8.写的时候 却是默认的GBK  那么  结果 就不对了。
回复 使用道具 举报
上楼说的正确 你读的时候用UTF-8解码,内存中数utf-8 的 ,写的时候为什么不utf-8 去加密呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马