У меня есть строка в java, имя файла которой содержит умляуты. Файл правильно хранится на диске Win 7 Pro (умлауты и т.п. правильно отображаются в списке файлов проводника). Я также попытался сохранить имя файла в текстовый файл, а затем имя файла было правильно выведено с умлаутами. Но когда я использую метод exists() из файла, он говорит, что файл не существует. Если я попытаюсь использовать метод createNewFile(), он создаст файл типа ä.txt (первоначально ä.txt). Что может быть не так в моих настройках здесь? Я использую Tomcat 6 и Eclipse для запуска своего веб-приложения.
Проблемы с кодировкой в файле Java
Ответы (1)
Если бы имя файла было включено как статическая константа в ваш исходный код, это не имело бы значения, где выполняется ваш код, но поскольку вы читаете имя файла с удаленного адреса, это имеет существенное значение.
По умолчанию каждый экземпляр Java в качестве кодировки по умолчанию в Windows обычно имеет значение «Cp1252», в других системах обычно «UTF-8». Поэтому каждый метод, который читает или записывает строки из/в сеть или файловую систему, использует кодировку по умолчанию, если вы не используете версии метода, в которых кодировка указана явно.
Поэтому запись имени файла в файл не демонстрирует всего, потому что правильность его отображения зависит от используемого вами текстового редактора, а не от программы Java, пишущей его.
Вывод: просмотрите свой код и убедитесь, что вы явно установили кодировку. Это особенно актуально для методов getBytes()
String и везде, где у вас есть экземпляр Reader/Writer, подключенный к InputStream/OutpuStream.