Настройка кодировки имени файла - PullRequest
2 голосов
/ 08 февраля 2012

У меня есть входной файл в определенной кодировке (utf8), из которого я создаю разные файлы, чьи имена и содержимое (снова utf8) берутся из этого входного файла.

Моя проблема в том, что одно конкретное окносистема, файлы, созданные не имеют правильные символы.Содержимое этих файлов отлично читается, а их имена нет.Вместо Ü.xml файл имеет имя ├£.xml.

В других системах Windows все работает нормально.

Кодировка содержимого файла может быть установлена ​​во втором аргументе OutputStreamWriter., но кодировка имени файла не может быть установлена ​​в new File(name), кажется.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

Просмотр двух символов, где должен быть один многобайтовый символ UTF-8 ü.что Windows, кажется, не имеет UTF-8 в качестве кодировки файлов.И файл UTF-8 был скопирован в эту систему, как распаковка zip-файла.

System.getProperty("file.encoding") должен дать кодировку платформы.Может быть, хотя это и можно представить, это какой-то странный случай, не описанный в Java.Windows, как сжатый каталог или второй внешний диск, отформатированный с файловой системой, не поддерживающей UTF-8.

1 голос
/ 08 февраля 2012

Java использует «кодировку платформы по умолчанию» для преобразования имен файлов в строки, и нет способа изменить это поведение через стандартный API. Вы можете в некоторых системах иметь возможность изменить кодировку по умолчанию при запуске JVM:

java -Dfile.encoding=cp1252 package.ClassName

В других системах единственный способ повлиять на кодировку имени файла - через системные языковые настройки. Подробнее об этом можно прочитать здесь: http://jonisalonen.com/2012/java-and-file-names-with-invalid-characters/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...