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».