IdnMapping.GetUnicode Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Декодирует одну или несколько меток доменного имени, закодированных в соответствии со стандартом IDNA строкой символов Юникода.
Перегрузки
| Имя | Описание |
|---|---|
| GetUnicode(String) |
Декодирует строку одной или нескольких меток доменного имени, закодированных в соответствии со стандартом IDNA, в строку символов Юникода. |
| GetUnicode(String, Int32) |
Декодирует подстроку одного или нескольких меток доменных имен, закодированных в соответствии со стандартом IDNA, в строку символов Юникода. |
| GetUnicode(String, Int32, Int32) |
Декодирует подстроку указанной длины, содержащей одну или несколько меток доменных имен, закодированных в соответствии со стандартом IDNA, в строку символов Юникода. |
GetUnicode(String)
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
Декодирует строку одной или нескольких меток доменного имени, закодированных в соответствии со стандартом IDNA, в строку символов Юникода.
public:
System::String ^ GetUnicode(System::String ^ ascii);
public string GetUnicode(string ascii);
member this.GetUnicode : string -> string
Public Function GetUnicode (ascii As String) As String
Параметры
- ascii
- String
Строка для декодировки, которая состоит из одной или нескольких меток в диапазоне символов US-ASCII (U+0020 до U+007E), закодированных в соответствии со стандартом IDNA.
Возвращаемое значение
Эквивалент Юникода подстроки IDNA, указанной параметром ascii .
Исключения
ascii равно null.
ascii является недопустимым AllowUnassigned в зависимости от свойств и UseStd3AsciiRules стандарта IDNA.
Примеры
В следующем примере метод используется GetAscii(String) для преобразования массива международных доменных имен в Punycode. Затем GetUnicode(String) метод преобразует доменное имя Punycode обратно в исходное доменное имя, но заменяет исходные разделители меток стандартным разделителем меток.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string[] names = { "bücher.com", "мойдомен.рф", "παράδειγμα.δοκιμή",
"mycharity\u3002org",
"prose\u0000ware.com", "proseware..com", "a.org",
"my_company.com" };
IdnMapping idn = new IdnMapping();
foreach (var name in names) {
try {
string punyCode = idn.GetAscii(name);
string name2 = idn.GetUnicode(punyCode);
Console.WriteLine("{0} --> {1} --> {2}", name, punyCode, name2);
Console.WriteLine("Original: {0}", ShowCodePoints(name));
Console.WriteLine("Restored: {0}", ShowCodePoints(name2));
}
catch (ArgumentException) {
Console.WriteLine("{0} is not a valid domain name.", name);
}
Console.WriteLine();
}
}
private static string ShowCodePoints(string str1)
{
string output = "";
foreach (var ch in str1)
output += $"U+{(ushort)ch:X4} ";
return output;
}
}
// The example displays the following output:
// bücher.com --> xn--bcher-kva.com --> bücher.com
// Original: U+0062 U+00FC U+0063 U+0068 U+0065 U+0072 U+002E U+0063 U+006F U+006D
// Restored: U+0062 U+00FC U+0063 U+0068 U+0065 U+0072 U+002E U+0063 U+006F U+006D
//
// мойдомен.рф --> xn--d1acklchcc.xn--p1ai --> мойдомен.рф
// Original: U+043C U+043E U+0439 U+0434 U+043E U+043C U+0435 U+043D U+002E U+0440 U+0444
// Restored: U+043C U+043E U+0439 U+0434 U+043E U+043C U+0435 U+043D U+002E U+0440 U+0444
//
// παράδειγμα.δοκιμή --> xn--hxajbheg2az3al.xn--jxalpdlp --> παράδειγμα.δοκιμή
// Original: U+03C0 U+03B1 U+03C1 U+03AC U+03B4 U+03B5 U+03B9 U+03B3 U+03BC U+03B1 U+002E U+03B4 U+03BF U+03BA U+03B9 U+03BC U+03AE
// Restored: U+03C0 U+03B1 U+03C1 U+03AC U+03B4 U+03B5 U+03B9 U+03B3 U+03BC U+03B1 U+002E U+03B4 U+03BF U+03BA U+03B9 U+03BC U+03AE
//
// mycharity。org --> mycharity.org --> mycharity.org
// Original: U+006D U+0079 U+0063 U+0068 U+0061 U+0072 U+0069 U+0074 U+0079 U+3002 U+006F U+0072 U+0067
// Restored: U+006D U+0079 U+0063 U+0068 U+0061 U+0072 U+0069 U+0074 U+0079 U+002E U+006F U+0072 U+0067
//
// prose ware.com is not a valid domain name.
//
// proseware..com is not a valid domain name.
//
// a.org --> a.org --> a.org
// Original: U+0061 U+002E U+006F U+0072 U+0067
// Restored: U+0061 U+002E U+006F U+0072 U+0067
//
// my_company.com --> my_company.com --> my_company.com
// Original: U+006D U+0079 U+005F U+0063 U+006F U+006D U+0070 U+0061 U+006E U+0079 U+002E U+0063 U+006F U+006D
// Restored: U+006D U+0079 U+005F U+0063 U+006F U+006D U+0070 U+0061 U+006E U+0079 U+002E U+0063 U+006F U+006D
Imports System.Globalization
Module Example
Public Sub Main()
Dim names() As String = { "bücher.com", "мойдомен.рф", "παράδειγμα.δοκιμή",
"mycharity" + ChrW(&h3002) + "org",
"prose" + ChrW(0) + "ware.com", "proseware..com", "a.org",
"my_company.com" }
Dim idn As New IdnMapping()
For Each name In names
Try
Dim punyCode As String = idn.GetAscii(name)
Dim name2 As String = idn.GetUnicode(punyCode)
Console.WriteLine("{0} --> {1} --> {2}", name, punyCode, name2)
Console.WriteLine("Original: {0}", ShowCodePoints(name))
Console.WriteLine("Restored: {0}", ShowCodePoints(name2))
Catch e As ArgumentException
Console.WriteLine("{0} is not a valid domain name.", name)
End Try
Console.WriteLine()
Next
End Sub
Private Function ShowCodePoints(str1 As String) As String
Dim output As String = ""
For Each ch In str1
output += String.Format("U+{0} ", Convert.ToUInt16(ch).ToString("X4"))
Next
Return output
End Function
End Module
' The example displays the following output:
' bücher.com --> xn--bcher-kva.com --> bücher.com
' Original: U+0062 U+00FC U+0063 U+0068 U+0065 U+0072 U+002E U+0063 U+006F U+006D
' Restored: U+0062 U+00FC U+0063 U+0068 U+0065 U+0072 U+002E U+0063 U+006F U+006D
'
' мойдомен.рф --> xn--d1acklchcc.xn--p1ai --> мойдомен.рф
' Original: U+043C U+043E U+0439 U+0434 U+043E U+043C U+0435 U+043D U+002E U+0440 U+0444
' Restored: U+043C U+043E U+0439 U+0434 U+043E U+043C U+0435 U+043D U+002E U+0440 U+0444
'
' παράδειγμα.δοκιμή --> xn--hxajbheg2az3al.xn--jxalpdlp --> παράδειγμα.δοκιμή
' Original: U+03C0 U+03B1 U+03C1 U+03AC U+03B4 U+03B5 U+03B9 U+03B3 U+03BC U+03B1 U+002E U+03B4 U+03BF U+03BA U+03B9 U+03BC U+03AE
' Restored: U+03C0 U+03B1 U+03C1 U+03AC U+03B4 U+03B5 U+03B9 U+03B3 U+03BC U+03B1 U+002E U+03B4 U+03BF U+03BA U+03B9 U+03BC U+03AE
'
' mycharity。org --> mycharity.org --> mycharity.org
' Original: U+006D U+0079 U+0063 U+0068 U+0061 U+0072 U+0069 U+0074 U+0079 U+3002 U+006F U+0072 U+0067
' Restored: U+006D U+0079 U+0063 U+0068 U+0061 U+0072 U+0069 U+0074 U+0079 U+002E U+006F U+0072 U+0067
'
' prose ware.com is not a valid domain name.
'
' proseware..com is not a valid domain name.
'
' a.org --> a.org --> a.org
' Original: U+0061 U+002E U+006F U+0072 U+0067
' Restored: U+0061 U+002E U+006F U+0072 U+0067
'
' my_company.com --> my_company.com --> my_company.com
' Original: U+006D U+0079 U+005F U+0063 U+006F U+006D U+0070 U+0061 U+006E U+0079 U+002E U+0063 U+006F U+006D
' Restored: U+006D U+0079 U+005F U+0063 U+006F U+006D U+0070 U+0061 U+006E U+0079 U+002E U+0063 U+006F U+006D
Комментарии
Дополнительные сведения о доменных именах, метках и разделителях меток см. в примечаниях метода IdnMapping.GetAscii(String, Int32, Int32) .
Применяется к
GetUnicode(String, Int32)
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
Декодирует подстроку одного или нескольких меток доменных имен, закодированных в соответствии со стандартом IDNA, в строку символов Юникода.
public:
System::String ^ GetUnicode(System::String ^ ascii, int index);
public string GetUnicode(string ascii, int index);
member this.GetUnicode : string * int -> string
Public Function GetUnicode (ascii As String, index As Integer) As String
Параметры
- ascii
- String
Строка для декодировки, которая состоит из одной или нескольких меток в диапазоне символов US-ASCII (U+0020 до U+007E), закодированных в соответствии со стандартом IDNA.
- index
- Int32
Отсчитываемое от нуля смещение ascii , указывающее начало подстроки для декодирования. Операция декодирования продолжается до конца ascii строки.
Возвращаемое значение
Эквивалент Юникода подстроки IDNA, указанной параметрами ascii и index параметрами.
Исключения
ascii равно null.
ascii является недопустимым AllowUnassigned в зависимости от свойств и UseStd3AsciiRules стандарта IDNA.
Комментарии
Дополнительные сведения о доменных именах, метках и разделителях меток см. в примечаниях метода IdnMapping.GetAscii(String, Int32, Int32) .
Применяется к
GetUnicode(String, Int32, Int32)
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
Декодирует подстроку указанной длины, содержащей одну или несколько меток доменных имен, закодированных в соответствии со стандартом IDNA, в строку символов Юникода.
public:
System::String ^ GetUnicode(System::String ^ ascii, int index, int count);
public string GetUnicode(string ascii, int index, int count);
member this.GetUnicode : string * int * int -> string
Public Function GetUnicode (ascii As String, index As Integer, count As Integer) As String
Параметры
- ascii
- String
Строка для декодировки, которая состоит из одной или нескольких меток в диапазоне символов US-ASCII (U+0020 до U+007E), закодированных в соответствии со стандартом IDNA.
- index
- Int32
Отсчитываемое от нуля смещение ascii , указывающее начало подстроки.
- count
- Int32
Число символов, которые необходимо преобразовать в подстроке, которая начинается с позиции, указанной index в строке ascii .
Возвращаемое значение
Эквивалент Юникода подстроки IDNA, указанной параметром ascii, indexи count параметрами.
Исключения
ascii равно null.
index или count меньше нуля.
–или–
index больше длины ascii.
–или–
index больше длины ascii минуса count.
ascii является недопустимым AllowUnassigned в зависимости от свойств и UseStd3AsciiRules стандарта IDNA.
Комментарии
Дополнительные сведения о доменных именах, метках и разделителях меток см. в примечаниях метода IdnMapping.GetAscii(String, Int32, Int32) .