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倒序输出

    评论

报告相同问题?

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程