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.

index меньше нуля.

–или–

index больше длины ascii.

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) .

Применяется к