IdnMapping.GetUnicode Methode

Definitie

Decoderen van een of meer domeinnaamlabels die zijn gecodeerd volgens de IDNA-standaard naar een tekenreeks met Unicode-tekens.

Overloads

Name Description
GetUnicode(String)

Decodeert een tekenreeks van een of meer domeinnaamlabels, gecodeerd volgens de IDNA-standaard, naar een tekenreeks met Unicode-tekens.

GetUnicode(String, Int32)

Decodeert een subtekenreeks van een of meer domeinnaamlabels, gecodeerd volgens de IDNA-standaard, naar een tekenreeks met Unicode-tekens.

GetUnicode(String, Int32, Int32)

Decodeert een subtekenreeks van een opgegeven lengte die een of meer domeinnaamlabels bevat, gecodeerd volgens de IDNA-standaard, naar een tekenreeks met Unicode-tekens.

GetUnicode(String)

Decodeert een tekenreeks van een of meer domeinnaamlabels, gecodeerd volgens de IDNA-standaard, naar een tekenreeks met Unicode-tekens.

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

Parameters

ascii
String

De tekenreeks om te decoderen, die bestaat uit een of meer labels in het US-ASCII tekenbereik (U+0020 tot U+007E) gecodeerd volgens de IDNA-standaard.

Retouren

Het Unicode-equivalent van de IDNA-subtekenreeks die is opgegeven door de ascii parameter.

Uitzonderingen

ascii is null.

ascii is ongeldig op basis van de AllowUnassigned en UseStd3AsciiRules eigenschappen en de IDNA-standaard.

Voorbeelden

In het volgende voorbeeld wordt de GetAscii(String) methode gebruikt om een matrix met geinternationaliseerde domeinnamen te converteren naar Punycode. De GetUnicode(String) methode converteert vervolgens de Punycode-domeinnaam terug naar de oorspronkelijke domeinnaam, maar vervangt de oorspronkelijke labelscheidingstekens door het standaardlabelscheidingsteken.

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

Opmerkingen

Zie de opmerkingen voor de IdnMapping.GetAscii(String, Int32, Int32) methode voor meer informatie over domeinnamen, labels en labelscheidingstekens.

Van toepassing op

GetUnicode(String, Int32)

Decodeert een subtekenreeks van een of meer domeinnaamlabels, gecodeerd volgens de IDNA-standaard, naar een tekenreeks met Unicode-tekens.

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

Parameters

ascii
String

De tekenreeks om te decoderen, die bestaat uit een of meer labels in het US-ASCII tekenbereik (U+0020 tot U+007E) gecodeerd volgens de IDNA-standaard.

index
Int32

Een offset op basis van nul waarin ascii het begin van de subtekenreeks wordt aangegeven om te decoderen. De decoderingsbewerking gaat verder met het einde van de ascii tekenreeks.

Retouren

Het Unicode-equivalent van de IDNA-subtekenreeks die is opgegeven door de ascii en index parameters.

Uitzonderingen

ascii is null.

index is kleiner dan nul.

– of –

index is groter dan de lengte van ascii.

ascii is ongeldig op basis van de AllowUnassigned en UseStd3AsciiRules eigenschappen en de IDNA-standaard.

Opmerkingen

Zie de opmerkingen voor de IdnMapping.GetAscii(String, Int32, Int32) methode voor meer informatie over domeinnamen, labels en labelscheidingstekens.

Van toepassing op

GetUnicode(String, Int32, Int32)

Decodeert een subtekenreeks van een opgegeven lengte die een of meer domeinnaamlabels bevat, gecodeerd volgens de IDNA-standaard, naar een tekenreeks met Unicode-tekens.

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

Parameters

ascii
String

De tekenreeks om te decoderen, die bestaat uit een of meer labels in het US-ASCII tekenbereik (U+0020 tot U+007E) gecodeerd volgens de IDNA-standaard.

index
Int32

Een offset op basis van nul waarin ascii het begin van de subtekenreeks wordt aangegeven.

count
Int32

Het aantal tekens dat moet worden geconverteerd in de subtekenreeks die begint op de positie die is opgegeven in index de ascii tekenreeks.

Retouren

Het Unicode-equivalent van de IDNA-subtekenreeks die is opgegeven door de ascii, indexen count parameters.

Uitzonderingen

ascii is null.

index of count kleiner is dan nul.

– of –

index is groter dan de lengte van ascii.

– of –

index is groter dan de lengte van ascii min count.

ascii is ongeldig op basis van de AllowUnassigned en UseStd3AsciiRules eigenschappen en de IDNA-standaard.

Opmerkingen

Zie de opmerkingen voor de IdnMapping.GetAscii(String, Int32, Int32) methode voor meer informatie over domeinnamen, labels en labelscheidingstekens.

Van toepassing op