Spec-Zone.ru › OpenJDK 24

Класс 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. Эти 2 операции используют алгоритм 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.

Since:
1.6
Внешние спецификации
  • RFC 1122: Требования к хостам Интернета — уровни взаимодействия
  • RFC 1123: Требования к хостам Интернета — приложения и поддержка
  • RFC 3454: Подготовка интернационализированных строк ("stringprep")
  • RFC 3490: Интернационализация доменных имён в приложениях (IDNA)
  • RFC 3491: Nameprep: Профиль Stringprep для интернационализированных доменных имён (IDN)
  • RFC 3492: Punycode: Кодировка Bootstring Unicode для интернационализированных доменных имён в приложениях (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.

Методы, объявленные в классе java.lang.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
Флаг для включения проверки по правилам STD-3 ASCII
См. также:
  • Значения константных полей

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

toASCII

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

Операция ToASCII может завершиться ошибкой. ToASCII завершается ошибкой, если любой из её этапов завершается ошибкой. Если операция 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)
Преобразует строку из Юникода в ASCII Compatible Encoding (ACE), как определено операцией ToASCII в RFC 3490.

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

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

toUnicode

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

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

Метка — это отдельная часть доменного имени. Исходная операция ToUnicode, как определено в RFC 3490, работает только с одной меткой. Этот метод может обрабатывать как метку, так и всё доменное имя, предполагая, что метки в доменном имени всегда разделены точками.

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

toUnicode

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

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

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/net/IDN.html

Spec-Zone.ru

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