为什么生成的txt文件里是这种乱码

IDEA写了几行java,想把一个二维数组放入txt中,数组大致如下:

img

结果最后打开txt,显示如下:

img

放上代码大家再看一下:


```java
Path path = Paths.get(fileName);
        try (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
            for (int i = 0; i < 1875; i++) {
                for (int j = 0; j < 1875; j++) {
                    writer.write(array[i][j]);
                    writer.write(" ");
                }
//                System.out.println("写入第"+i);
                writer.newLine();
            }

        }

```

找到原因了 array[i][j] ,你的这个是个int值对吧,writer写入int的时候这个文件成了二进制的了,不是写入的字符了。
改成这样就正常了 writer.write(String.valueOf(array[i][j]));

贴一下相关代码

如果你在Java中使用了OutputStreamWriter将文本写入文件,可以在创建OutputStreamWriter对象时指定编码方式。例如,如果要将文本编码为UTF-8格式,可以使用以下代码:

OutputStream os = new FileOutputStream("path/to/your/file.txt");
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
osw.write("your text");
osw.close();

若对你有所帮助,望采纳。

参考GPT和自己的思路,出现乱码的原因可能是因为你在将二维数组存储到文本文件中时,没有指定正确的字符编码格式。

在 Java 中,将数据存储到文本文件中需要使用输出流。在创建输出流时,需要指定正确的字符编码格式,否则数据在写入文件时可能会出现乱码。例如,如果要将数据以 UTF-8 编码格式写入到文本文件中,可以使用以下代码:

try (Writer writer = new OutputStreamWriter(new FileOutputStream("output.txt"), "UTF-8")) {
    for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array[i].length; j++) {
            writer.write(array[i][j] + " ");
        }
        writer.write("\n");
    }
} catch (IOException e) {
    e.printStackTrace();
}

在这个例子中,我们使用 Writer 类将数据写入到文件中。在创建 Writer 对象时,使用了 OutputStreamWriter 类指定了字符编码格式为 UTF-8。在循环中,我们将数组中的每个元素以字符串形式写入文件中,并在每行末尾添加了一个换行符。

希望这可以帮助你解决问题。

您好,关于您提出的生成的txt文件里是这种乱码的情况:
首先:将txt文件复制到您电脑上的其它文件夹下,尝试用记事本或者nodepad++软件打开看是否正常
其次:文件顶部有一个文件超出大小的提示,您可以尝试写入文件时,减小数据量看看是否能显示正常,能则说明是数据量太大的问题
再次:可以使用nodepad++软件打开,然后选择编码,修改文件的编码为utf8看看是否正常,或者在程序中写入文件时设置"utf-8编码,以此确定是否是编码的问题。

换个文本软件打开, 比如 notepad++


该回答引用chatGPT部分内容和我

// 定义二维数组
int[][] array = new int[][] {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
// 将二维数组写入txt文件
try {
    FileWriter fw = new FileWriter("array.txt");
    for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array[i].length; j++) {
            fw.write(array[i][j] + " ");
        }
        fw.write("\n");
    }
    fw.close();
} catch (IOException e) {
    e.printStackTrace();
}

原因是写入时使用的字符编码和期望的不一致导致的。 java工作区统一编码。 统一为utf-8 这个就是输出流的编码问题吧? 如果你在输出时指定好具体的编码,或者说指定跟原网页一直的编码。 如果你期望写到文件中的汉字是 GBK编码,可以写文件时,将字符串准换成 GBK编码的byte[]。 网页编码和输出流编码一致

写入的代码默认编码方式与直接打开文本的编码方式不同,导致乱码。建议把代码放出来看看。

这是你的IDEA的编码问题,在这里设置一下就行:

img

img