文件显示问题

keptsmiling 2012-12-04 02:20:41
想要在控制台中打印 记事本中的内容 记事本中的内容是 "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);
...全文
146 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
String s=new String(Byte,"utf8");改成String s=new String(Byte,"GB2312");
Heqikun 2012-12-04
  • 打赏
  • 举报
回复
你用字节流就可能出现这种问题。UTF-8是三个字节一个码,你一个码一个码读,只要有读出来的码它在码表中找不到对应的字符就会用‘?’字符替代。就是说你第一个字符读出来部分码被拿去到码表中找字符去了。建议用字符流处理字符。
nmyangym 2012-12-04
  • 打赏
  • 举报
回复
文件前面有3个标志字节:0xef,0xbb,0xbf,跳国这3个字节就好了。

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

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧