Считываю файлы следующим образом:
Files.lines(Paths.get(path), Charset.forName("UTF-8")).reduce("", String::concat)
Изначально была ошибка:
java.nio.file.InvalidPathException: Malformed input or input contains unmappable characters: /path/?????? ? ???.txt
Сделал следующее:
path = URLDecoder.decode(path, "UTF-8")
Ошибка немного изменилась:
java.nio.file.InvalidPathException: Malformed input or input contains unmappable characters: /path/имя файла.txt
Много копался в гугле, задавал уже один вопрос, но удалил его из-за плохой формулировки.
Пришёл к следующему: параметры file.encoding и sun.jnu.encodingимеют значение ANSI_X3.4-1968.
Изменять их с помощью System.setProperty(), устанавливать переменные среды JAVA_TOOL_OPTIONS, JAVA_OPTS, NXF_OPTS, JVM_SUPPORT_RECOMMENDED_ARGS, CATALINA_OPTS и так далее. Ничего не помогает. Если изменить имя файла на английское - ошибок никаких нет.
Как изменить эти системные параметры? Локали тоже установлены:
[root@rop web]# locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=ru_RU.UTF-8
Сделал, чтобы прямо перед чтением файла вызывался метод System.setProperty(), затем getProperty(), параметры меняются, но ошибка остаётся.
tomcat 9, URIEncoding="UTF-8" в host server.xml установлено.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости