Класс IDN
public final class IDN extends Object
Интернциализированные доменные имена определены в 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. Если они не соответствуют требованиям, это является ошибкой.
Важное значение имеет соображение безопасности в отношении поддержки интернационализированных доменных имён. Например, английские доменные имена могут быть гомографически — злонамеренно неправильно написаны путём замены букв не-латинского алфавита. Unicode Technical Report #36 также рассматривает вопросы безопасности поддержки IDN и возможные решения. Приложения несут ответственность за принятие надлежащих мер безопасности при использовании интернационализированных доменных имён.
- С момента:
- 1.6
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
ALLOW_UNASSIGNED |
Флаг, разрешающий обработку неназначенных код-точек |
static final int |
USE_STD3_ASCII_RULES |
Флаг для включения проверки по правилам STD-3 ASCII |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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. |
Подробное описание полей
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 может завершиться ошибкой. ToASCII завершается неудачей, если любой из её этапов завершается ошибкой. Если операция ToASCII завершается ошибкой, будет брошено исключение IllegalArgumentException. В этом случае входная строка не должна использоваться в интернационализированном доменном имени.
Метка — это отдельная часть доменного имени. Исходная операция ToASCII, как определена в RFC 3490, работает только с одной меткой. Этот метод может обрабатывать как метку, так и всё доменное имя, предполагая, что метки в доменном имени всегда разделяются точками. Следующие символы распознаются как точки: \u002E (точка), \u3002 (идеографическая точка), \uFF0E (полная точка ширины), и \uFF61 (полуширинная идеографическая точка). Если точки используются в качестве разделителей меток, этот метод также изменяет все их на \u002E (точку) в выходной преобразованной строке.
- Параметры:
-
input- обрабатываемая строка -
flag- флаг обработки; может быть 0 или любой логической суммой возможных флагов - Возвращает:
- преобразованную
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 или любой логической суммой возможных флагов - Возвращает:
- преобразованную
String
toUnicode
public static String toUnicode(String input)
Этот вспомогательный метод работает так, как будто вызывается его двухаргументный аналог следующим образом:
toUnicode(input, 0);
- Параметры:
-
input- обрабатываемая строка - Возвращает:
- преобразованную
String
© 1993, 2021, 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/17/docs/api/java.base/java/net/IDN.html