日期:2014-05-20  浏览次数:20669 次

文件显示问题
想要在控制台中打印 记事本中的内容 记事本中的内容是 "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);
------最佳解决方案--------------------
文件前面有3个标志字节:0xef,0xbb,0xbf,跳国这3个字节就好了。

String s=new String(Byte,3,Byte.length-3,"utf8");//跳过前3 个字节

------其他解决方案--------------------
你用字节流就可能出现这种问题。UTF-8是三个字节一个码,你一个码一个码读,只要有读出来的码它在码表中找不到对应的字符就会用‘?’字符替代。就是说你第一个字符读出来部分码被拿去到码表中找字符去了。建议用字符流处理字符。
------其他解决方案--------------------
String s=new String(Byte,"utf8");改成String s=new String(Byte,"GB2312");