openjdk.ruOpenJDK на русском

JEP 226: UTF-8 Property Resource Bundles

Наборы ресурсов на основе файлов свойств в кодировке UTF-8

ОтветственныйNaoto Sato
ТипFeature
ОбластьSE
СтатусClosed / Delivered
Выпуск9
Компонентcore-libs / java.util:i18n
Обсуждениеi18n dash dev at openjdk dot java dot net
ТрудоёмкостьS
ДлительностьM
РецензентыBrian Goetz
ОдобренBrian Goetz
Создан2014/05/20 17:06
Обновлён2022/01/14 12:13
Задача8043553

Аннотация

Определить способ, с помощью которого приложения смогут указывать файлы свойств в кодировке UTF-8, и расширить ResourceBundle API, чтобы он мог их загружать.

Мотивация

Платформа уже давно предоставляет формат файлов свойств, который основан на ISO-8859-1 и предусматривает механизм экранирования для символов, которые нельзя представить в этой кодировке. Этот формат поддерживается стандартным механизмом поиска наборов ресурсов. Как отмечено в связанных RFE, этим форматом неудобно пользоваться, потому что он требует постоянного преобразования между экранированной формой и текстом в кодировках, которые можно редактировать напрямую.

Описание

Изменить кодировку по умолчанию, в которой класс ResourceBundle загружает файлы свойств, с ISO-8859-1 на UTF-8. Тогда приложениям больше не нужно будет преобразовывать файлы свойств с помощью механизма экранирования. Это изменение редко затрагивает существующие файлы свойств, поскольку диапазон U+0000-U+007F в ISO-8859-1 совместим с UTF-8, а символы с кодовыми точками больше U+00FF и так должны были быть экранированы. Если при чтении файла свойств в UTF-8 возникает исключение (MalformedInputException или UnmappableCharacterException), файл свойств читается заново с самого начала, с возвратом к кодировке ISO-8859-1. На тот редкий случай, когда файл свойств в ISO-8859-1 может быть распознан как корректный файл UTF-8, этот JEP предоставляет способ явно указать кодировку (ISO-8859-1 или UTF-8) с помощью системного свойства «java.util.PropertyResourceBundle.encoding».