Чтение текстового файла из хост-системы и контейнера Docker дает разные результаты - PullRequest
0 голосов
/ 21 октября 2019

Я хочу читать текстовый файл построчно в приложении, которое выполняется внутри контейнера докера. Файл содержит пути к некоторым другим файлам, и я хочу возиться с ними.

Поскольку файл также считывается программой vb6, его необходимо кодировать в ISO-8859-1.

Когда я читаю файл на моем хосте Docker (Ubuntu 18.04.3), все работает. Но когда я читаю его в моем док-контейнере, специальные символы не читаются должным образом.

Это мой код:

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,

НадеюсьКто-то может помочь.

1 Ответ

0 голосов
/ 21 октября 2019

Итак, после небольшого перерыва я обнаружил, что стандартный Charset контейнера Docker был установлен в ASCII, я понятия не имею, почему.

Поэтому все, что мне нужно было сделать, это установить кодировку по умолчанию дляJava при запуске программы сjava -Dfile.encoding=UTF-8 MainClass

...