乱码问题求解

我是老肖 2015-07-11 12:02:03
InputStream in = new FileInputStream("D://11/1.txt");
byte [] buffer1 =new byte[1024];
int len =0;
while ((len=in.read(buffer1))!=-1) {
System.out.println(System.getProperty("sun.jnu.encoding")+"--"+System.getProperty("file.encoding")+"--"+len+"----"+new String(buffer1,"gbk"));
}
in.close();
输出结果:utf-8--UTF-8--58----大江东去浪淘尽,千古风流人物,故垒西边,人倒是三国周郎赤壁
已知:System.getProperty("sun.jnu.encoding")是utf-8
System.getProperty("file.encoding")是utf-8
为什么输出语句的时候new String(buffer1,"gbk"));必须要转码成gbk才可以不乱码,转成utf-8也乱码?
求解。。。。
...全文
212 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sg19911227 2015-07-13
  • 打赏
  • 举报
回复
你可以把你的文本进行另存为来改变编码格式!!!
我是老肖 2015-07-11
  • 打赏
  • 举报
回复
引用 3 楼 Inhibitory 的回复:
因为文件的编码是 GBK
我用代码测试了一下,真的是gbk格式,谢谢。 public static String codeString(String fileName) throws Exception{ BufferedInputStream bin = new BufferedInputStream( new FileInputStream(fileName)); int p = (bin.read() << 8) + bin.read(); String code = null; //其中的 0xefbb、0xfffe、0xfeff、0x5c75这些都是这个文件的前面两个字节的16进制数 switch (p) { case 0xefbb: code = "UTF-8"; break; case 0xfffe: code = "Unicode"; break; case 0xfeff: code = "UTF-16BE"; break; case 0x5c75: code = "ANSI|ASCII" ; break ; default: code = "GBK"; } return code; }
我是老肖 2015-07-11
  • 打赏
  • 举报
回复
引用 3 楼 Inhibitory 的回复:
因为文件的编码是 GBK
文件自己新建的一个小文本,file.encoding都是utf-8的话,新建出来的文件的编码为什么不是utf-8的呢。新建出来的文本文档的编码和什么有关啊?
Inhibitory 2015-07-11
  • 打赏
  • 举报
回复
因为文件的编码是 GBK
spotmaverick 2015-07-11
  • 打赏
  • 举报
回复
引用 1 楼 spotmaverick的回复:
八成是因为你的表只能输出的显示窗口使用了gbk解码。
标准输出
spotmaverick 2015-07-11
  • 打赏
  • 举报
回复
八成是因为你的表只能输出的显示窗口使用了gbk解码。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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