Класс IDN
public final class IDN extends Object
Интернационализированные доменные имена определены в 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
- Внешние спецификации
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
ALLOW_UNASSIGNED |
Флаг, разрешающий обработку неназначенных кодовых точек |
static final int |
USE_STD3_ASCII_RULES |
Флаг, включающий проверку на соответствие правилам ASCII STD-3 |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static String |
toASCII |
Преобразует строку из Unicode в ASCII Compatible Encoding (ACE), как определено операцией ToASCII в RFC 3490. |
static String |
toASCII |
Преобразует строку из Unicode в ASCII Compatible Encoding (ACE), как определено операцией ToASCII в RFC 3490. |
static String |
toUnicode |
Преобразует строку из ASCII Compatible Encoding (ACE) в Unicode, как определено операцией ToUnicode в RFC 3490. |
static String |
toUnicode |
Преобразует строку из 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 |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого объекта Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Приостанавливает выполнение текущего потока до его пробуждения, обычно посредством уведомления или прерывания. |
final void |
wait |
Приостанавливает выполнение текущего потока до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Приостанавливает выполнение текущего потока до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
ALLOW_UNASSIGNED
public static final int ALLOW_UNASSIGNED
- См. также:
USE_STD3_ASCII_RULES
public static final int USE_STD3_ASCII_RULES
- См. также:
Подробное описание методов
toASCII
public static String toASCII(String input, int flag)
Операция ToASCII может завершиться ошибкой. Она завершается ошибкой, если на любом её этапе возникает сбой. В этом случае будет выброшено исключение IllegalArgumentException. В таком случае входную строку не следует использовать в интернационализированном доменном имени.
Метка — это отдельная часть доменного имени. Исходная операция ToASCII, определённая в RFC 3490, работает только с одной меткой. Этот метод может обрабатывать как метку, так и доменное имя целиком, предполагая, что метки в доменном имени всегда разделяются точками. Точками считаются следующие символы: \u002E (точка), \u3002 (идеографическая точка), \uFF0E (полноширинная точка) и \uFF61 (полуширинная идеографическая точка). Если в качестве разделителей меток используются точки, этот метод также заменяет их все на \u002E (точку) в результирующей преобразованной строке.
- Параметры:
-
input— строка для обработки -
flag— флаг обработки; может быть равен 0 или логическому OR любых допустимых флагов - Возвращает:
- преобразованную
String - Выбрасывает:
-
IllegalArgumentException— если входная строка не соответствует спецификации RFC 3490 - Внешние спецификации
toASCII
public static String toASCII(String input)
Этот вспомогательный метод работает так, как если бы вызывался двухаргументный аналог следующим образом:
toASCII(input, 0);
- Параметры:
-
input— строка для обработки - Возвращает:
- преобразованную
String - Выбрасывает:
-
IllegalArgumentException— если входная строка не соответствует спецификации RFC 3490 - Внешние спецификации
toUnicode
public static String toUnicode(String input, int flag)
Операция ToUnicode никогда не завершается ошибкой. При возникновении любой ошибки входная строка возвращается без изменений.
Метка — это отдельная часть доменного имени. Исходная операция ToUnicode, определённая в RFC 3490, работает только с одной меткой. Этот метод может обрабатывать как метку, так и доменное имя целиком, предполагая, что метки в доменном имени всегда разделяются точками. Точками считаются следующие символы: \u002E (точка), \u3002 (идеографическая точка), \uFF0E (полноширинная точка) и \uFF61 (полуширинная идеографическая точка).
- Параметры:
-
input— строка для обработки -
flag— флаг обработки; может быть равен 0 или логическому OR любых допустимых флагов - Возвращает:
- преобразованную
String - Внешние спецификации
toUnicode
public static String toUnicode(String input)
Этот вспомогательный метод работает так, как если бы вызывался двухаргументный аналог следующим образом:
toUnicode(input, 0);
- Параметры:
-
input— строка для обработки - Возвращает:
- преобразованную
String - Внешние спецификации
© 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.