gpt4 book ai didi

java - 从主机系统和 Docker 容器读取文本文件会产生不同的结果

转载 作者:行者123 更新时间:2023-12-01 22:43:11 25 4
gpt4 key购买 nike

我想在 Docker 容器内运行的应用程序中逐行读取文本文件。该文件包含一些其他文件的路径,我想处理这些文件。

由于该文件也由 vb6 程序读取,因此需要采用 ISO-8859-1 进行编码。

当我在 docker 主机(ubuntu 18.04.3)上读取文件时,一切正常。但是当我在 docker 容器中读取它时,特殊字符无法正确读取。

这是我的代码:

String n = "/foo/bar.txt";
List<String> lines = Files.readAllLines(Paths.get(n),StandardCharsets.ISO_8859_1);
for(String line : lines) {
File[] directories = new File(line).listFiles(File::isDirectory);
}

在我的主机上,directories 已正确填充,但在 docker-container 内它是 null

我发现问题出在特殊字符 ä 上。当我打印出字节时,在主机上它是:-61 -92,而在容器内它是63

容器源自 amazoncoretto:8,

希望有人能帮忙。

最佳答案

经过一番摆弄,我发现 Docker 容器的标准字符集设置为 ASCII,我不知道为什么。

所以我所要做的就是在程序启动时设置 java 的默认编码
java -Dfile.encoding=UTF-8 MainClass

关于java - 从主机系统和 Docker 容器读取文本文件会产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58483877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com