write写入是乱码


import java.io.RandomAccessFile;

public class AppendTest {
    public static void main(String[] args) {
        try (
                // 使用RadomAccessFile创建一个只读的输入流
                RandomAccessFile raf = new RandomAccessFile("AppendTest.java", "rw");
            )
            {
                raf.write("//做人好累".getBytes());    
            } catch (Exception ex) {
                ex.printStackTrace();
            }
    }
}

为什么写进去的是乱码,应该正常写入“做人好累”才对

img


eclipse编码已经改为utf8

img


命令行编译运行

img

写入的时候没有指定字符编码吧
改成这样试试

String content = "//做人好累";
raf.write(content.getBytes(StandardCharsets.UTF_8));

【以下回答由 GPT 生成】

这种乱码问题出现的原因是,在使用 RandomAccessFile 写入文件时,write 方法默认会将传入的字节数组使用平台默认的字符集进行编码转换。由于平台默认的字符集可能与文件的实际编码不一致,导致写入文件时出现乱码问题。

要解决这个问题,可以使用指定的字符集来将文本转换为字节数组,然后再进行写入操作。下面是修改后的代码示例:

import java.io.RandomAccessFile;
import java.nio.charset.StandardCharsets;

public class AppendTest {
    public static void main(String[] args) {
        try (
                // 使用RadomAccessFile创建一个只读的输入流
                RandomAccessFile raf = new RandomAccessFile("AppendTest.java", "rw");
        ) {
            String text = "//做人好累";
            byte[] bytes = text.getBytes(StandardCharsets.UTF_8);
            raf.write(bytes);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

在这个示例中,我们使用 StandardCharsets.UTF_8 字符集将文本转换为字节数组,然后通过 write 方法写入文件。这样可以确保将文本以正确的字符集编码写入文件,避免出现乱码问题。

注意:在使用不同的编程语言和库时,可能存在不同的处理方式,请根据实际情况进行适当的调整。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^