我想在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容器内部为null
。
我确定问题是特殊字符ä
。当我打印出字节时,在主机上是-61 -92
,而在容器内是63
。
该容器源自amazoncoretto:8,
我希望有人能提供帮助。
答案 0 :(得分:0)
因此,在发现了一些疑虑之后,docker容器的标准Charset被设置为ASCII,我不知道为什么。
所以我要做的就是使用
java -Dfile.encoding=UTF-8 MainClass