Spec-Zone.ru › OpenJDK 27

Класс IDN

java.lang.Object
java.net.IDN
public final class IDN extends Object
Предоставляет методы для преобразования интернационализированных доменных имён (IDN) из обычного представления Unicode в представление ASCII Compatible Encoding (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. Несоответствие этим требованиям считается ошибкой.
Эти флаги можно объединять с помощью логической операции OR.

При поддержке интернационализированных доменных имён важно учитывать вопросы безопасности. Например, английские доменные имена могут быть гомоглифными — злоумышленники могут намеренно подменять латинские буквы похожими буквами из других письменностей. В документе Технический отчёт 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 Compatible Encoding (ACE), как определено операцией ToASCII в RFC 3490.
static String toASCII(String input, int flag)
Преобразует строку из Unicode в ASCII Compatible Encoding (ACE), как определено операцией ToASCII в RFC 3490.
static String toUnicode(String input)
Преобразует строку из ASCII Compatible Encoding (ACE) в Unicode, как определено операцией ToUnicode в RFC 3490.
static String toUnicode(String input, int flag)
Преобразует строку из ASCII Compatible Encoding (ACE) в Unicode, как определено операцией ToUnicode в RFC 3490.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Приостанавливает выполнение текущего потока до его пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Приостанавливает выполнение текущего потока до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает выполнение текущего потока до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

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 Compatible Encoding (ACE), как определено операцией ToASCII в RFC 3490.

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

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

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

toASCII

public static String toASCII(String input)
Преобразует строку из Unicode в ASCII Compatible Encoding (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 Compatible Encoding (ACE) в Unicode, как определено операцией ToUnicode в RFC 3490.

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

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

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

toUnicode

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

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

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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторское право © 1993, 2026, 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.

Spec-Zone.ru

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