Настройка кодировки имени файла

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

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

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

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

Благодарю.

 Thomas08 февр. 2012 г., 17:07
Что произойдет, если вы копируете вручнуюÜ.xml к этой системе Windows? Какая кодировка JVM по умолчанию в обеих системах?
 stracktracer13 февр. 2012 г., 10:44
Спасибо за ответ. Оказывается, проблема связана с maven, так как файлы правильно генерируются при выполнении java, но проблема возникает только тогда, когда maven упаковывает их в jar-файл. Видеть:stackoverflow.com/questions/9258347/file-name-encoding-in-jar
 stracktracer13 февр. 2012 г., 09:23
Копирование вручную работает.System.getProperty("file.encoding") "Cp1252" на обоих.

Ответы на вопрос(2)

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

java -Dfile.encoding=cp1252 package.ClassName

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

Решение Вопроса

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

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

 stracktracer13 февр. 2012 г., 09:21
Благодарю за ваш ответ. file.encoding - это "Cp1252" в обеих системах.
 Joop Eggen13 февр. 2012 г., 10:08
Как был создан файл? Вручную не должно быть вины. В Java, как"ü.xml" Возможны две ошибки: исходная кодировка может быть установлена в IDE, а компилятор также может быть параметризован с помощью кодировки:javac -encoding Cp1252 ....

Ваш ответ на вопрос