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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 新航向 于 2014-9-1 20:47 编辑

Demo_utf-8.txt”内容字符编码为UTF-8
已经通过“bw = new BufferedWriter(new OutputStreamWriter(System.out,"GBK"));”将编码转成GBK,为什么打印后仍为乱码?
如何解决?
向各位大神求教
  1. import java.io.*;
  2. class OutTest
  3. {
  4.      public static void main(String[] args)
  5.      {
  6.          BufferedReader br = null;
  7.          BufferedWriter bw = null;
  8.          try
  9.          {
  10.                 br = new BufferedReader(new FileReader("C:\\Users\\ZSG\\Desktop\Demo_utf-8.txt"));
  11.                 bw = new BufferedWriter(new OutputStreamWriter(System.out,"GBK"));
  12.                 String len = null;
  13.                 while ((len=br.readLine())!=null)
  14.                 {
  15.                       bw.write(len);
  16.                       bw.newLine();
  17.                       bw.flush();
  18.                 }
  19.            }
  20.            catch (IOException e)
  21.           {
  22.                   System.out.println("复制失败");
  23.           }
  24.           finally
  25.           {
  26.                try
  27.                {
  28.                    if(br!=null)
  29.                    br.close();
  30.                }
  31.                catch (IOException e)
  32.                {
  33.                }
  34.                try
  35.                {
  36.                if(bw!=null)
  37.                bw.close();
  38.                }
  39.                catch (IOException e)
  40.                {
  41.                 }
  42.           }
  43.       }
  44. }
复制代码



控制台打印结果.png (68.86 KB, 下载次数: 18)

控制台打印结果.png

评分

参与人数 1技术分 +1 收起 理由
天黑偷牛 + 1 淡定

查看全部评分

4 个回复

倒序浏览
win的控制台本身默认是gbk编码吧?那显示utf8肯定乱码啊。你用chcp 650001把控制台的编码改成utf8试试
回复 使用道具 举报
fantacyleo 发表于 2014-9-1 18:48
win的控制台本身默认是gbk编码吧?那显示utf8肯定乱码啊。你用chcp 650001把控制台的编码改成utf8试试 ...

我通过下面的代码不是在打印前将内容转换成“GBK”了吗,怎么还不行?
bw = new BufferedWriter(new OutputStreamWriter(System.out,"GBK"));
回复 使用道具 举报
用转换流指定UTF-8码表去读   打印出来就没事了
回复 使用道具 举报
java--周群 发表于 2014-9-1 19:43
用转换流指定UTF-8码表去读   打印出来就没事了

嗯,这样解决了,多谢!
原来乱码产生于读取时
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马