Spec-Zone.ru › OpenJDK 25

Класс IDN

java.lang.Object
java.net.IDN
public final class IDN extends Object
Предоставляет методы для преобразования интернационализированных доменных имён (IDN) между обычным представлением Unicode и представлением ASCII-совместимой кодировки (ACE). В интернационализированных доменных именах могут использоваться символы из всего диапазона Unicode, тогда как традиционные доменные имена ограничены символами ASCII. ACE — это кодировка строк Unicode, использующая только символы ASCII; её можно применять с программным обеспечением (например, системой доменных имён), которое понимает только традиционные доменные имена.

Интернационализированные доменные имена определены в RFC 3490. RFC 3490 определяет две операции: ToASCII и ToUnicode. Эти две операции используют алгоритм Nameprep, являющийся профилем Stringprep, и алгоритм Punycode для преобразования строк доменных имён в обоих направлениях.

Поведение описанного выше процесса преобразования можно настроить с помощью различных флагов:

  • Если используется флаг ALLOW_UNASSIGNED, преобразуемая строка доменного имени может содержать кодовые точки, не назначенные в Unicode 3.2 — версии Unicode, на которой основано преобразование IDN. Если флаг не используется, наличие таких неназначенных кодовых точек считается ошибкой.
  • Если используется флаг USE_STD3_ASCII_RULES, строки ASCII проверяются на соответствие RFC 1122 и RFC 1123. Несоответствие требованиям считается ошибкой.
Эти флаги можно объединять с помощью логической операции ИЛИ.

При поддержке интернационализированных доменных имён важно учитывать вопросы безопасности. Например, английские доменные имена могут быть гомоглифными — намеренно написанными с ошибками путём замены букв латиницы буквами других письменностей. В Техническом отчёте Unicode № 36 рассматриваются проблемы безопасности, связанные с поддержкой IDN, а также возможные решения. При использовании интернационализированных доменных имён приложения должны принимать надлежащие меры безопасности.

Если не указано иное, передача аргумента null любому методу этого класса приведёт к выбрасыванию NullPointerException.

Начиная с:
1.6
Внешние спецификации
  • RFC 1122: требования к интернет-узлам — уровни взаимодействия
  • RFC 1123: требования к интернет-узлам — приложения и поддержка
  • RFC 3454: подготовка интернационализированных строк («stringprep»)
  • RFC 3490: интернационализация доменных имён в приложениях (IDNA)
  • RFC 3491: Nameprep: профиль Stringprep для интернационализированных доменных имён (IDN)
  • RFC 3492: Punycode: кодировка Unicode на основе Bootstring для интернационализированных доменных имён в приложениях (IDNA)
  • Рекомендации по безопасности Unicode

Краткое описание полей

Модификатор и тип Поле Описание
static final int ALLOW_UNASSIGNED
Флаг, разрешающий обработку неназначенных кодовых точек
static final int USE_STD3_ASCII_RULES
Флаг, включающий проверку соответствия правилам ASCII STD-3

Краткое описание методов

Модификатор и тип Метод Описание
static String toASCII(String input)
Преобразует строку из Unicode в ASCII-совместимую кодировку (ACE), как определено операцией ToASCII в RFC 3490.
static String toASCII(String input, int flag)
Преобразует строку из Unicode в ASCII-совместимую кодировку (ACE), как определено операцией ToASCII в RFC 3490.
static String toUnicode(String input)
Преобразует строку из ASCII-совместимой кодировки (ACE) в Unicode, как определено операцией ToUnicode в RFC 3490.
static String toUnicode(String input, int flag)
Преобразует строку из ASCII-совместимой кодировки (ACE) в Unicode, как определено операцией ToUnicode в RFC 3490.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

ALLOW_UNASSIGNED

public static final int ALLOW_UNASSIGNED
Флаг, разрешающий обработку неназначенных кодовых точек
См. также:
  • Значения констант полей

USE_STD3_ASCII_RULES

public static final int USE_STD3_ASCII_RULES
Флаг, включающий проверку соответствия правилам ASCII STD-3
См. также:
  • Значения констант полей

Подробное описание методов

toASCII

public static String toASCII(String input, int flag)
Преобразует строку из Unicode в ASCII-совместимую кодировку (ACE), как определено операцией ToASCII в RFC 3490.

Операция ToASCII может завершиться ошибкой. Она завершается ошибкой, если не удаётся выполнить любой из её шагов. В этом случае будет выброшено исключение IllegalArgumentException. Такую входную строку не следует использовать в интернационализированном доменном имени.

Метка — это отдельная часть доменного имени. Исходная операция ToASCII, определённая в RFC 3490, работает только с одной меткой. Этот метод может обрабатывать как одну метку, так и доменное имя целиком, предполагая, что метки в доменном имени всегда разделены точками. В качестве точек распознаются следующие символы: \u002E (точка), \u3002 (идеографическая точка), \uFF0E (полноширинная точка) и \uFF61 (полуширинная идеографическая точка). Если точки используются в качестве разделителей меток, этот метод также заменяет их все на \u002E (точку) в результирующей преобразованной строке.

Параметры:
input — строка для обработки
flag — флаг обработки; может быть равен 0 или результату логического ИЛИ любых допустимых флагов
Возвращает:
преобразованную String
Выбрасывает:
IllegalArgumentException — если входная строка не соответствует спецификации RFC 3490
Внешние спецификации
  • RFC 3490: интернационализация доменных имён в приложениях (IDNA)

toASCII

public static String toASCII(String input)
Преобразует строку из Unicode в ASCII-совместимую кодировку (ACE), как определено операцией ToASCII в RFC 3490.

Этот упрощённый метод работает так, как если бы он вызывал двухаргументный вариант следующим образом:

toASCII(input, 0);
Параметры:
input — строка для обработки
Возвращает:
преобразованную String
Выбрасывает:
IllegalArgumentException — если входная строка не соответствует спецификации RFC 3490
Внешние спецификации
  • RFC 3490: интернационализация доменных имён в приложениях (IDNA)

toUnicode

public static String toUnicode(String input, int flag)
Преобразует строку из ASCII-совместимой кодировки (ACE) в Unicode, как определено операцией ToUnicode в RFC 3490.

Операция ToUnicode никогда не завершается ошибкой. В случае любой ошибки входная строка возвращается без изменений.

Метка — это отдельная часть доменного имени. Исходная операция ToUnicode, определённая в RFC 3490, работает только с одной меткой. Этот метод может обрабатывать как одну метку, так и доменное имя целиком, предполагая, что метки в доменном имени всегда разделены точками. В качестве точек распознаются следующие символы: \u002E (точка), \u3002 (идеографическая точка), \uFF0E (полноширинная точка) и \uFF61 (полуширинная идеографическая точка).

Параметры:
input — строка для обработки
flag — флаг обработки; может быть равен 0 или результату логического ИЛИ любых допустимых флагов
Возвращает:
преобразованную String
Внешние спецификации
  • RFC 3490: интернационализация доменных имён в приложениях (IDNA)

toUnicode

public static String toUnicode(String input)
Преобразует строку из ASCII-совместимой кодировки (ACE) в Unicode, как определено операцией ToUnicode в RFC 3490.

Этот упрощённый метод работает так, как если бы он вызывал двухаргументный вариант следующим образом:

toUnicode(input, 0);
Параметры:
input — строка для обработки
Возвращает:
преобразованную String
Внешние спецификации
  • RFC 3490: интернационализация доменных имён в приложениях (IDNA)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/IDN.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API