想要在控制台中打印 记事本中的内容 记事本中的内容是 "gyugf屌丝你好gjhgh"
打印出来的结果是"?gyugf屌丝你好gjhgh" 多出来了一个 ?号.
记事本的编码格式改成了 utf-8
代码如下:
File file =new File("E:/1234.txt");
byte []Byte=new byte[(int)file.length()];
FileInputStream in=new FileInputStream(file);
in.read(Byte);
String s=new String(Byte,"utf8");
System.out.println(s);

解决方案 »

  1.   

    文件前面有3个标志字节:0xef,0xbb,0xbf,跳国这3个字节就好了。 String s=new String(Byte,3,Byte.length-3,"utf8");//跳过前3 个字节
      

  2.   

    你用字节流就可能出现这种问题。UTF-8是三个字节一个码,你一个码一个码读,只要有读出来的码它在码表中找不到对应的字符就会用‘?’字符替代。就是说你第一个字符读出来部分码被拿去到码表中找字符去了。建议用字符流处理字符。
      

  3.   

    String s=new String(Byte,"utf8");改成String s=new String(Byte,"GB2312");