javkhuang 2020-07-02 23:06 采纳率: 0%
浏览 138

请教一下利用随机流尝试将一个文本倒置输出,运行结果是乱码的w't

请指教一下哪里逻辑不对,或者汉字编码有问题,数字和字母可以正常输出,但汉字会乱码,初学java不太懂,代码也很乱,请见谅

import java.io.*;

public class E4_1 {
    public static void main(String args[]) {
//      File file = new File("E:\\Java\\eclipse-workspace\\Test10\\src\\E","E4_1.java");
        File file = new File("E4_1test.txt");
//      int[] b = {1,2,3,4,5};
        String str = "上海自来水321";
        try {
            RandomAccessFile raf = new RandomAccessFile(file,"rw");//按字节顺序读取
            raf.writeUTF(str);
//          for(int i = 0;i<b.length;i++) {
//              raf.writeInt(b[i]);
//          }
            long length = file.length();
            System.out.println(length);
//          byte b = new byte[length]
            while(length>=0) {
                length=length-1;
                raf.seek(length);
                int c = raf.readByte();
                if(c<=255&&c>=0) {
                    System.out.print((char)c);
                }
                else {
                    length=length-1;
                    raf.seek(length);
                    byte[] cc = new byte[2];
                    raf.readFully(cc);
                    byte t = cc[1];
                    cc[1] = cc[0];
                    cc[0] = t;
//                  String s = new String(cc);
//                  byte tom[] = s.getBytes("iso-8859-1");
//                  String p = new String(tom);
//                  System.out.print(p);
                    System.out.println(new String(cc));
                }   
            }
//          raf.close();
        }
        catch(IOException e) {}
    }
}
  • 写回答

1条回答 默认 最新

  • storm_huang 2020-07-03 09:16
    关注

    中文是多字节的,不像英文数字符号是ASCII码,不能直接简单的把字节对换,需要判断字符范围,具体可以查查编码规范。
    或者改成用其他方式,用char倒序输出

    评论

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境