永发信息网

java BufferedReader部分输出乱码求助

答案:3  悬赏:60  手机版
解决时间 2021-02-23 22:01
  • 提问者网友:练爱
  • 2021-02-23 05:30
java BufferedReader部分输出乱码求助
最佳答案
  • 五星知识达人网友:独行浪子会拥风
  • 2021-02-23 06:57
可以尝试使用:BufferedReader br = new BufferedReader(new InputStreamReader(System.in,"UTF-8"));
最好直接用DataInputStream dis 和 DataOutputStream dos,这样的话读取、发送数据时使用dis.writeUTF()和dos.readUTF()即可,不要再考虑乱码问题。
全部回答
  • 1楼网友:由着我着迷
  • 2021-02-23 07:44
正常读写英文时用没问题 FileReader fre = new FileReader("E:\\TEST\\readText.txt");  FileWriter fwi = new FileWriter("E:\\TEST\\readText2.txt");   BufferedReader bufr = new BufferedReader(fre ); BufferedWriter bufw = new BufferedWriter(fwi );   String line = null; while((line = bufr.readLine()) != null){      bufw.write(line);      bufw.newLine();      bufw.flush();   }   bufr.close();    bufw.close();      读取中文时需要用GBK,否则会出现乱码 File fileIn= new File("E:\\TEST\\readText.txt"); File fileOut= new File("E:\\TEST\\readText2.txt");  InputStreamReader inStream = new InputStreamReader(new FileInputStream(fileIn), "GBK");  OutputStreamWriter writerStream = new OutputStreamWriter(new FileOutputStream(fileOut),"GBK");  BufferedReader reader = new BufferedReader(inStream); BufferedWriter writer = new BufferedWriter(writerStream); String lineWriter = null;while ((lineWriter = reader.readLine()) != null) {     writer.write(lineWriter);      writer.newLine();      writer.flush();  }  reader.close();  writer.close();
  • 2楼网友:低音帝王
  • 2021-02-23 07:14
因为inputstreamreader是字节输出(汉字会被分为两个字节),而bufferedreader是它的“包装”(整行读取),效率更高,所以配合使用更好。 可以通过bufferedreader 流的形式进行流缓存,之后通过readline方法获取到缓存的内容。 bufferedreader bre = null; try { bre = new bufferedreader(new inputstreamreader(system.in));//此时获取到的bre就是整个文件的缓存流 while ((str = bre.readline())!= null) // 判断最后一行不存在,为空结束循环 { system.out.println(str);//原样输出读到的内容 }; 备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯