IdnMapping.GetUnicode IdnMapping.GetUnicode IdnMapping.GetUnicode IdnMapping.GetUnicode Method

Определение

Декодирует одно или нескольких меток доменного имени, кодированных в соответствии со стандартом IDNA в строку символов Юникода.Decodes one or more domain name labels encoded according to the IDNA standard to a string of Unicode characters.

Перегрузки

GetUnicode(String) GetUnicode(String) GetUnicode(String) GetUnicode(String)

Декодирует строку, состоящую из одной или нескольких меток доменного имени, в соответствии со стандартом IDNA в строку символов Юникода.Decodes a string of one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

GetUnicode(String, Int32) GetUnicode(String, Int32) GetUnicode(String, Int32) GetUnicode(String, Int32)

Декодирует подстроку, состоящую из одной или нескольких меток доменного имени, в соответствии со стандартом IDNA в строку символов Юникода.Decodes a substring of one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

GetUnicode(String, Int32, Int32) GetUnicode(String, Int32, Int32) GetUnicode(String, Int32, Int32) GetUnicode(String, Int32, Int32)

Декодирует подстроку заданной длины, состоящую из одной или нескольких меток доменного имени, в соответствии со стандартом IDNA в строку символов Юникода.Decodes a substring of a specified length that contains one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

GetUnicode(String) GetUnicode(String) GetUnicode(String) GetUnicode(String)

Декодирует строку, состоящую из одной или нескольких меток доменного имени, в соответствии со стандартом IDNA в строку символов Юникода.Decodes a string of one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

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 String String String

Строка для декодирования, состоящая из одной или нескольких меток в диапазоне символов US-ASCII (с U+0020 до U+007E), закодированных в соответствии со стандартом IDNA.The string to decode, which consists of one or more labels in the US-ASCII character range (U+0020 to U+007E) encoded according to the IDNA standard.

Возвраты

Эквивалент подстроки IDNA, указанной в параметре ascii, в символах Юникода.The Unicode equivalent of the IDNA substring specified by the ascii parameter.

Исключения

Свойство ascii имеет значение null.ascii is null.

Параметр ascii не является допустимым на основе свойств AllowUnassigned и UseStd3AsciiRules, а также стандарта IDNA,ascii is invalid based on the AllowUnassigned and UseStd3AsciiRules properties, and the IDNA standard.

Примеры

В следующем примере используется GetAscii(String) метод для преобразования массива международных доменных имен в Punycode.The following example uses the GetAscii(String) method to convert an array of internationalized domain names to Punycode. Затем GetUnicode(String) метод преобразует имя домена Punycode обратно в исходное доменное имя, но заменяет исходные разделители меток стандартным разделителем меток.The GetUnicode(String) method then converts the Punycode domain name back into the original domain name, but replaces the original label separators with the standard label separator.

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 += String.Format("U+{0} ", Convert.ToUInt16(ch).ToString("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) к методу.For more information about domain names, labels, and label separators, see the remarks for the IdnMapping.GetAscii(String, Int32, Int32) method.

GetUnicode(String, Int32) GetUnicode(String, Int32) GetUnicode(String, Int32) GetUnicode(String, Int32)

Декодирует подстроку, состоящую из одной или нескольких меток доменного имени, в соответствии со стандартом IDNA в строку символов Юникода.Decodes a substring of one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

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 String String String

Строка для декодирования, состоящая из одной или нескольких меток в диапазоне символов US-ASCII (с U+0020 до U+007E), закодированных в соответствии со стандартом IDNA.The string to decode, which consists of one or more labels in the US-ASCII character range (U+0020 to U+007E) encoded according to the IDNA standard.

index
Int32 Int32 Int32 Int32

Нулевое смещение в ascii, которое указывает на начало подстроки для декодирования.A zero-based offset into ascii that specifies the start of the substring to decode. Процедура декодирования продолжается до окончания строки ascii.The decoding operation continues to the end of the ascii string.

Возвраты

Эквивалент подстроки IDNA, указанной в параметрах ascii и index, в символах Юникода.The Unicode equivalent of the IDNA substring specified by the ascii and index parameters.

Исключения

Свойство ascii имеет значение null.ascii is null.

Значение параметра index меньше нуля.index is less than zero.

- или --or- значение index превышает длину параметра ascii.index is greater than the length of ascii.

Параметр ascii не является допустимым на основе свойств AllowUnassigned и UseStd3AsciiRules, а также стандарта IDNA,ascii is invalid based on the AllowUnassigned and UseStd3AsciiRules properties, and the IDNA standard.

Комментарии

Дополнительные сведения о доменных именах, метках и разделителях меток см. в комментариях IdnMapping.GetAscii(String, Int32, Int32) к методу.For more information about domain names, labels, and label separators, see the remarks for the IdnMapping.GetAscii(String, Int32, Int32) method.

GetUnicode(String, Int32, Int32) GetUnicode(String, Int32, Int32) GetUnicode(String, Int32, Int32) GetUnicode(String, Int32, Int32)

Декодирует подстроку заданной длины, состоящую из одной или нескольких меток доменного имени, в соответствии со стандартом IDNA в строку символов Юникода.Decodes a substring of a specified length that contains one or more domain name labels, encoded according to the IDNA standard, to a string of Unicode characters.

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 String String String

Строка для декодирования, состоящая из одной или нескольких меток в диапазоне символов US-ASCII (с U+0020 до U+007E), закодированных в соответствии со стандартом IDNA.The string to decode, which consists of one or more labels in the US-ASCII character range (U+0020 to U+007E) encoded according to the IDNA standard.

index
Int32 Int32 Int32 Int32

Нулевое смещение в ascii, которое указывает на начало подстроки.A zero-based offset into ascii that specifies the start of the substring.

count
Int32 Int32 Int32 Int32

Количество символов для преобразования в подстроку, которая начинается с места, указанного параметром index в строке ascii.The number of characters to convert in the substring that starts at the position specified by index in the ascii string.

Возвраты

Эквивалент подстроки IDNA, указанной в параметрах ascii, index и count, в символах Юникода.The Unicode equivalent of the IDNA substring specified by the ascii, index, and count parameters.

Исключения

Значение параметра index или count меньше нуля.index or count is less than zero.

- или --or- Значение index превышает длину ascii.index is greater than the length of ascii.

-или--or- длина значения index больше, чем длина ascii минус count.index is greater than the length of ascii minus count.

Параметр ascii не является допустимым на основе свойств AllowUnassigned и UseStd3AsciiRules, а также стандарта IDNA,ascii is invalid based on the AllowUnassigned and UseStd3AsciiRules properties, and the IDNA standard.

Комментарии

Дополнительные сведения о доменных именах, метках и разделителях меток см. в комментариях IdnMapping.GetAscii(String, Int32, Int32) к методу.For more information about domain names, labels, and label separators, see the remarks for the IdnMapping.GetAscii(String, Int32, Int32) method.

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