java.util.Properties и Cp1250
Могу ли я использовать java.util.Properties с кодировкой, отличной от используемой по умолчанию?
3 ответа
Нет, если вы
- бегут Java 6 или позже
- контролировать код загрузки файла свойств и может использовать Reader. Смотрите Javadoc.
Это довольно досадный недостаток в спецификации. Существует несколько обходных путей, возможно, самым простым из которых является автоматическое создание файла.properties, совместимого с экранированием Юникода, из источника, соответствующего кодировке (cp1250, utf-8 и т. Д.).
Java поставляется с транскодером native2ascii, который сделает это за вас:
Есть несколько пожилых РСЕ по этому вопросу:
Да, но тогда вы должны быть осторожны, чтобы использовать load()
а также store()
методы, которые принимают Reader
/ Writer
и явно построить их, используя InputStreamReader/OutputStreamWriter
с правильной кодировкой.
Это может быть невозможно с библиотеками, которые неявно используют файлы свойств.
Изменить: методы, описанные выше, были введены только в Java 1.6 - для более старых версий вам не повезло, как писал dsadinoff.
Если ваш файл свойств доступен во время сборки, вы также можете преобразовать его в свой скрипт ant с помощью задачи native2ascii:
<property name="javac.source.encoding" value="Cp1250"/>
<native2ascii src="${src.dir}" dest="${classes.dir}"
encoding="${javac.source.encoding}"
includes="**/*.properties"/>