我想在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,
我希望有人能提供帮助。
因此,在发现了一些疑虑之后,docker容器的标准Charset被设置为ASCII,我不知道为什么。
因此,我所要做的就是使用java -Dfile.encoding=UTF-8 MainClass
在程序启动时设置Java的默认编码>