IdnMapping.GetUnicode Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Avkodar en eller flera domännamnsetiketter som kodas enligt IDNA-standarden till en sträng med Unicode-tecken.
Överlagringar
| Name | Description |
|---|---|
| GetUnicode(String) |
Avkodar en sträng med en eller flera domännamnsetiketter, kodade enligt IDNA-standarden, till en sträng med Unicode-tecken. |
| GetUnicode(String, Int32) |
Avkodar en delsträng med en eller flera domännamnsetiketter, kodade enligt IDNA-standarden, till en sträng med Unicode-tecken. |
| GetUnicode(String, Int32, Int32) |
Avkodar en delsträng av en angiven längd som innehåller en eller flera domännamnsetiketter, kodade enligt IDNA-standarden, till en sträng med Unicode-tecken. |
GetUnicode(String)
Avkodar en sträng med en eller flera domännamnsetiketter, kodade enligt IDNA-standarden, till en sträng med Unicode-tecken.
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
Parametrar
- ascii
- String
Strängen som ska avkodas, som består av en eller flera etiketter i US-ASCII teckenintervallet (U+0020 till U+007E) kodade enligt IDNA-standarden.
Returer
Unicode-motsvarigheten till IDNA-delsträngen som anges av parametern ascii .
Undantag
ascii är null.
ascii är ogiltigt baserat på AllowUnassigned egenskaperna och UseStd3AsciiRules och IDNA-standarden.
Exempel
I följande exempel används GetAscii(String) metoden för att konvertera en matris med internationaliserade domännamn till Punycode. Metoden GetUnicode(String) konverterar sedan punycode-domännamnet tillbaka till det ursprungliga domännamnet, men ersätter de ursprungliga etikettavgränsarna med standardetikettavgränsaren.
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
Kommentarer
Mer information om domännamn, etiketter och etikettavgränsare finns i anmärkningarna IdnMapping.GetAscii(String, Int32, Int32) för metoden.
Gäller för
GetUnicode(String, Int32)
Avkodar en delsträng med en eller flera domännamnsetiketter, kodade enligt IDNA-standarden, till en sträng med Unicode-tecken.
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
Parametrar
- ascii
- String
Strängen som ska avkodas, som består av en eller flera etiketter i US-ASCII teckenintervallet (U+0020 till U+007E) kodade enligt IDNA-standarden.
- index
- Int32
En nollbaserad förskjutning i ascii som anger början av delsträngen som ska avkodas. Avkodningsåtgärden fortsätter till slutet av strängen ascii .
Returer
Unicode-motsvarigheten till IDNA-delsträngen som anges av parametrarna ascii och index .
Undantag
ascii är null.
ascii är ogiltigt baserat på AllowUnassigned egenskaperna och UseStd3AsciiRules och IDNA-standarden.
Kommentarer
Mer information om domännamn, etiketter och etikettavgränsare finns i anmärkningarna IdnMapping.GetAscii(String, Int32, Int32) för metoden.
Gäller för
GetUnicode(String, Int32, Int32)
Avkodar en delsträng av en angiven längd som innehåller en eller flera domännamnsetiketter, kodade enligt IDNA-standarden, till en sträng med Unicode-tecken.
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
Parametrar
- ascii
- String
Strängen som ska avkodas, som består av en eller flera etiketter i US-ASCII teckenintervallet (U+0020 till U+007E) kodade enligt IDNA-standarden.
- index
- Int32
En nollbaserad förskjutning i ascii som anger början av delsträngen.
- count
- Int32
Antalet tecken som ska konverteras i delsträngen som börjar vid den position som anges av index i strängen ascii .
Returer
Unicode-motsvarigheten till IDNA-delsträngen som anges av parametrarna ascii, indexoch count .
Undantag
ascii är null.
index eller count är mindre än noll.
-eller-
index är större än längden på ascii.
-eller-
index är större än längden ascii på minus count.
ascii är ogiltigt baserat på AllowUnassigned egenskaperna och UseStd3AsciiRules och IDNA-standarden.
Kommentarer
Mer information om domännamn, etiketter och etikettavgränsare finns i anmärkningarna IdnMapping.GetAscii(String, Int32, Int32) för metoden.