Класс IDN
- java.lang.Object
-
- java.net.IDN
public final class IDN extends Object
Предоставляет методы для преобразования интернационализированных доменных имён (IDN) между обычным представлением Юникода и представлением ASCII Compatible Encoding (ACE). Интернационализированные доменные имена могут использовать символы из всего диапазона Юникода, в то время как традиционные доменные имена ограничены символами ASCII. ACE — это кодировка строк Юникода, использующая только символы ASCII и может быть использована с программным обеспечением (например, система доменных имён), которое понимает только традиционные доменные имена.
Интернационализированные доменные имена определены в RFC 3490. RFC 3490 определяет две операции: ToASCII и ToUnicode. Эти 2 операции используют алгоритм Nameprep, который является профилем Stringprep, и алгоритм Punycode для преобразования строки доменного имени в обе стороны.
Поведение указанного процесса преобразования может быть настроено с помощью различных флагов:
- Если используется флаг ALLOW_UNASSIGNED, строка доменного имени, подлежащая преобразованию, может содержать кодовые точки, которые не назначены в Юникоде 3.2, которая является версией Юникода, на основе которой выполняется преобразование IDN. Если флаг не используется, наличие таких неназначенных кодовых точек рассматривается как ошибка.
- Если используется флаг USE_STD3_ASCII_RULES, строки ASCII проверяются по RFC 1122 и RFC 1123. Если они не удовлетворяют требованиям, это ошибка.
Важна надёжность в отношении поддержки интернационализированных доменных имён. Например, доменные имена на английском языке могут быть гомографическими - злонамеренно искажёнными путём подстановки нелатинских символов. Технический отчёт Юникода #36 также рассматривает вопросы безопасности поддержки IDN и возможные решения. Приложения несут ответственность за принятие достаточных мер безопасности при использовании интернационализированных доменных имён.
- С момента:
- 1.6
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
static int |
ALLOW_UNASSIGNED |
Флаг для разрешения обработки неназначенных кодовых точек |
static int |
USE_STD3_ASCII_RULES |
Флаг для включения проверки по правилам STD-3 ASCII |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
static String |
toASCII(String input) |
Преобразует строку из Юникода в ASCII Compatible Encoding (ACE), как определено операцией ToASCII в RFC 3490. |
static String |
toASCII(String input,
int flag) |
Преобразует строку из Юникода в ASCII Compatible Encoding (ACE), как определено операцией ToASCII в RFC 3490. |
static String |
toUnicode(String input) |
Преобразует строку из ASCII Compatible Encoding (ACE) в Юникод, как определено операцией ToUnicode в RFC 3490. |
static String |
toUnicode(String input,
int flag) |
Преобразует строку из ASCII Compatible Encoding (ACE) в Юникод, как определено операцией 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
toASCII
public static String toASCII(String input)
Преобразует строку из Юникода в ASCII Compatible Encoding (ACE), как определено операцией ToASCII в RFC 3490.
Этот вспомогательный метод работает так, как будто вызывается двухпараметрический аналог следующим образом:
toASCII(input, 0);
- Параметры:
-
input- строка для обработки - Возвращает:
- преобразованную
String - Выбрасывает:
-
IllegalArgumentException- если входная строка не соответствует спецификации RFC 3490
toUnicode
public static String toUnicode(String input,
int flag)
Преобразует строку из ASCII Compatible Encoding (ACE) в Юникод, как определено операцией ToUnicode в RFC 3490.
ToUnicode никогда не завершается неудачей. В случае ошибки входная строка возвращается без изменений.
Метка — это отдельная часть доменного имени. Исходная операция ToUnicode, как определено в RFC 3490, работает только с одной меткой. Этот метод может обрабатывать как метку, так и всё доменное имя, предполагая, что метки в доменном имени всегда разделяются точками.
- Параметры:
-
input- строка для обработки -
flag- флаг обработки; может быть 0 или любое логическое ИЛИ возможных флагов - Возвращает:
- преобразованную
String
toUnicode
public static String toUnicode(String input)
Преобразует строку из ASCII Compatible Encoding (ACE) в Юникод, как определено операцией ToUnicode в RFC 3490.
Этот вспомогательный метод работает так, как будто вызывается двухпараметрический аналог следующим образом:
toUnicode(input, 0);
- Параметры:
-
input- строка для обработки - Возвращает:
- преобразованную
String
© 1993, 2020, 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/11/docs/api/java.base/java/net/IDN.html