Вопрос

Могу ли я использовать java.util.Properties с кодировкой, отличной от стандартной?

Это было полезно?

Решение

Нет, если только ты

  1. используете Java 6 или более позднюю версию
  2. управлять кодом, загружающим файл свойств, и может использовать Reader.Видеть Javadoc.

Это довольно досадный недостаток спецификации.Существует несколько обходных путей, вероятно, самым простым из них является автоматическое создание файла .properties, совместимого с экранированием Юникода, из источника, подходящего для кодировки (cp1250, utf-8 и т. д.).

Java поставляется с транскодером под названием родной2ascii сделать это для вас:

На эту тему есть несколько старых RFE:

Другие советы

Да, но тогда нужно быть осторожным при использовании 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"/>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top