IdnMapping.GetAscii Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Codiert eine Zeichenfolge aus Domänennamensbezeichnungen, die Unicode-Zeichen außerhalb des US-ASCII-Zeichenbereichs in eine Zeichenfolge aus anzeigbaren Unicode-Zeichen im US-ASCII-Zeichenbereich (U+0020 bis U+007E) enthalten. Die Zeichenfolge wird entsprechend dem IDNA-Standard formatiert.
Überlädt
GetAscii(String) |
Codiert eine Zeichenfolge von Domänennamensbezeichnungen, die aus Unicode-Zeichen bestehen, in eine Zeichenfolge aus anzeigbaren Unicode-Zeichen im US-ASCII-Zeichenbereich. Die Zeichenfolge wird entsprechend dem IDNA-Standard formatiert. |
GetAscii(String, Int32) |
Codiert eine Teilzeichenfolge Domänennamensbezeichnungen, die Unicode-Zeichen außerhalb des US-ASCII-Zeichenbereichs enthalten. Die Teilzeichenfolge wird in eine Zeichenfolge aus anzeigbaren Unicode-Zeichen im US-ASCII-Zeichenbereich konvertiert und wird entsprechend dem IDNA-Standard formatiert. |
GetAscii(String, Int32, Int32) |
Codiert die angegebene Anzahl von Zeichen in einer Teilzeichenfolge von Domänennamensbezeichnungen, die Unicode-Zeichen außerhalb des US-ASCII-Zeichenbereichs enthalten. Die Teilzeichenfolge wird in eine Zeichenfolge aus anzeigbaren Unicode-Zeichen im US-ASCII-Zeichenbereich konvertiert und wird entsprechend dem IDNA-Standard formatiert. |
GetAscii(String)
- Quelle:
- IdnMapping.cs
- Quelle:
- IdnMapping.cs
- Quelle:
- IdnMapping.cs
Codiert eine Zeichenfolge von Domänennamensbezeichnungen, die aus Unicode-Zeichen bestehen, in eine Zeichenfolge aus anzeigbaren Unicode-Zeichen im US-ASCII-Zeichenbereich. Die Zeichenfolge wird entsprechend dem IDNA-Standard formatiert.
public:
System::String ^ GetAscii(System::String ^ unicode);
public string GetAscii (string unicode);
member this.GetAscii : string -> string
Public Function GetAscii (unicode As String) As String
Parameter
- unicode
- String
Eine zu konvertierende Eingabezeichenfolge, die aus einer oder mehreren durch Bezeichnungstrennzeichen getrennten Domänennamensbezeichnungen besteht.
Gibt zurück
Die Entsprechung der durch die unicode
-Parameter angegebene Zeichenfolge, bestehend aus anzeigbaren Unicode-Zeichen im US-ASCII-Zeichenbereich (U+0020 bis U+007E) und formatiert entsprechend des IDNA-Standards.
Ausnahmen
unicode
ist null
.
unicode
ist auf der Grundlage der AllowUnassigned-Eigenschaft, der UseStd3AsciiRules-Eigenschaft und dem IDNA-Standard ungültig.
Beispiele
Im folgenden Beispiel wird die GetAscii(String) -Methode verwendet, um ein Array von internationalisierten Domänennamen in Punycode zu konvertieren. Hierbei handelt es sich um eine codierte Entsprechung, die aus Zeichen im US-ASCII-Zeichenbereich besteht. Die GetUnicode(String) -Methode konvertiert dann den Punycode-Domänennamen wieder in den ursprünglichen Domänennamen, ersetzt jedoch die ursprünglichen Bezeichnungstrennzeichen durch das Standardbezeichnungstrennzeichen.
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
Hinweise
Der unicode
Parameter gibt eine Zeichenfolge mit mindestens einer Bezeichnung an, die aus gültigen Unicode-Zeichen besteht. Die Bezeichnungen werden durch Bezeichnungstrennzeichen getrennt. Der unicode
Parameter kann nicht mit einem Bezeichnungstrennzeichen beginnen, aber er kann ein Trennzeichen enthalten und optional mit diesem enden. Die Bezeichnungstrennzeichen sind FULL STOP (Punkt, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) und HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Der Domänenname "www.adatum.com" besteht beispielsweise aus den Bezeichnungen "www", "adatum" und "com", die durch Punkte getrennt sind.
Eine Bezeichnung darf keines der folgenden Zeichen enthalten:
Unicode-Steuerzeichen von U+0001 bis U+001F und U+007F.
Nicht zugewiesene Unicode-Zeichen, wenn der Wert der AllowUnassigned -Eigenschaft ist
false
.Nicht standardmäßige Zeichen im US-ASCII-Zeichenbereich, z. B. leerzeichen (U+0020), AUSRUFEZEICHEN (U+0021) und LOW LINE (U+005F), wenn der Wert der UseStd3AsciiRules -Eigenschaft ist
true
.Zeichen, die in einer bestimmten Version des IDNA-Standards verboten sind. Weitere Informationen zu unzulässigen Zeichen finden Sie unter RFC 3454: Vorbereitung internationalisierter Zeichenfolgen ("Stringprep") für IDNA 2003 und RFC 5982: Die Unicode-Codepunkte und internationalisierten Domänennamen für Anwendungen für IDNA 2008.
Die GetAscii -Methode konvertiert alle Bezeichnungstrennzeichen in FULL STOP (Punkt, U+002E).
Wenn unicode
keine Zeichen außerhalb des US-ASCII-Zeichenbereichs enthalten sind und keine Zeichen innerhalb des US-ASCII-Zeichenbereichs verboten sind, gibt die Methode unverändert zurück unicode
.
Hinweise für Aufrufer
Im .NET Framework 4.5 unterstützt die IdnMapping Klasse je nach verwendetem Betriebssystem verschiedene Versionen des IDNA-Standards:
Wenn sie auf Windows 8 ausgeführt wird, unterstützt sie die Version 2008 des IDNA-Standards, der in RFC 5891: Internationalisierte Domänennamen in Anwendungen (IDNA): Protocol beschrieben ist.
Wenn sie auf früheren Versionen des Windows-Betriebssystems ausgeführt wird, unterstützt es die Version 2003 des Standards, der in RFC 3490: Internationalisieren von Domänennamen in Anwendungen (IDNA) beschrieben ist.
Unter Unicode Technical Standard #46: IDNA Compatibility Processing (Unicode Technical Standard #46: IDNA-Kompatibilitätsverarbeitung ) finden Sie informationen zu den Unterschieden in der Art und Weise, wie diese Standards bestimmte Zeichensätze behandeln.
Gilt für:
GetAscii(String, Int32)
- Quelle:
- IdnMapping.cs
- Quelle:
- IdnMapping.cs
- Quelle:
- IdnMapping.cs
Codiert eine Teilzeichenfolge Domänennamensbezeichnungen, die Unicode-Zeichen außerhalb des US-ASCII-Zeichenbereichs enthalten. Die Teilzeichenfolge wird in eine Zeichenfolge aus anzeigbaren Unicode-Zeichen im US-ASCII-Zeichenbereich konvertiert und wird entsprechend dem IDNA-Standard formatiert.
public:
System::String ^ GetAscii(System::String ^ unicode, int index);
public string GetAscii (string unicode, int index);
member this.GetAscii : string * int -> string
Public Function GetAscii (unicode As String, index As Integer) As String
Parameter
- unicode
- String
Eine zu konvertierende Eingabezeichenfolge, die aus einer oder mehreren durch Bezeichnungstrennzeichen getrennten Domänennamensbezeichnungen besteht.
- index
- Int32
Ein nullbasierter Offset in unicode
, der den Anfang der zu konvertierenden Teilzeichenfolge angibt. Der Konvertierungsvorgang wird bis zum Ende der unicode
-Zeichenfolge fortgesetzt.
Gibt zurück
Die Entsprechung der durch die unicode
und index
-Parameter angegebenen Teilzeichenfolge, bestehend aus anzeigbaren Unicode-Zeichen im US-ASCII-Zeichenbereich (U+0020 bis U+007E) und formatiert entsprechend des IDNA-Standards.
Ausnahmen
unicode
ist null
.
index
ist kleiner als Null.
- oder -
index
ist größer als die Länge von unicode
.
unicode
ist auf der Grundlage der AllowUnassigned-Eigenschaft, der UseStd3AsciiRules-Eigenschaft und dem IDNA-Standard ungültig.
Hinweise
Die unicode
Parameter und index
definieren eine Teilzeichenfolge mit einer oder mehreren Bezeichnungen, die aus gültigen Unicode-Zeichen bestehen. Die Bezeichnungen werden durch Bezeichnungstrennzeichen getrennt. Das erste Zeichen der Teilzeichenfolge kann nicht mit einem Bezeichnungstrennzeichen beginnen, aber es kann ein Trennzeichen enthalten und optional mit diesem enden. Die Bezeichnungstrennzeichen sind FULL STOP (Punkt, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) und HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Der Domänenname "www.adatum.com" besteht beispielsweise aus den Bezeichnungen "www", "adatum" und "com", die durch Punkte getrennt sind.
Eine Bezeichnung darf keines der folgenden Zeichen enthalten:
Unicode-Steuerzeichen von U+0001 bis U+001F und U+007F.
Nicht zugewiesene Unicode-Zeichen, abhängig vom Wert der AllowUnassigned Eigenschaft.
Nicht standardmäßige Zeichen im US-ASCII-Zeichenbereich, z. B. die Zeichen LEERZEICHEN (U+0020), AUSRUFEZEICHEN (U+0021) und LOW LINE (U+005F), abhängig vom Wert der UseStd3AsciiRules Eigenschaft.
Zeichen, die in einer bestimmten Version des IDNA-Standards verboten sind. Weitere Informationen zu unzulässigen Zeichen finden Sie unter RFC 3454: Vorbereitung internationalisierter Zeichenfolgen ("Stringprep") für IDNA 2003 und RFC 5982: Die Unicode-Codepunkte und internationalisierten Domänennamen für Anwendungen für IDNA 2008.
Die GetAscii -Methode konvertiert alle Bezeichnungstrennzeichen in FULL STOP (Punkt, U+002E).
Wenn unicode
keine Zeichen außerhalb des US-ASCII-Zeichenbereichs enthalten sind und keine Zeichen innerhalb des US-ASCII-Zeichenbereichs verboten sind, gibt die Methode unverändert zurück unicode
.
Hinweise für Aufrufer
Im .NET Framework 4.5 unterstützt die IdnMapping Klasse je nach verwendetem Betriebssystem verschiedene Versionen des IDNA-Standards:
Wenn sie auf Windows 8 ausgeführt wird, unterstützt sie die Version 2008 des IDNA-Standards, der in RFC 5891: Internationalisierte Domänennamen in Anwendungen (IDNA): Protocol beschrieben ist.
Wenn sie auf früheren Versionen des Windows-Betriebssystems ausgeführt wird, unterstützt es die Version 2003 des Standards, der in RFC 3490: Internationalisieren von Domänennamen in Anwendungen (IDNA) beschrieben ist.
Unter Unicode Technical Standard #46: IDNA Compatibility Processing (Unicode Technical Standard #46: IDNA-Kompatibilitätsverarbeitung ) finden Sie informationen zu den Unterschieden in der Art und Weise, wie diese Standards bestimmte Zeichensätze behandeln.
Gilt für:
GetAscii(String, Int32, Int32)
- Quelle:
- IdnMapping.cs
- Quelle:
- IdnMapping.cs
- Quelle:
- IdnMapping.cs
Codiert die angegebene Anzahl von Zeichen in einer Teilzeichenfolge von Domänennamenbezeichnungen, die Unicode-Zeichen außerhalb des US-ASCII-Zeichenbereichs enthalten. Die Teilzeichenfolge wird in eine Zeichenfolge aus anzeigbaren Unicode-Zeichen im US-ASCII-Zeichenbereich konvertiert und wird entsprechend dem IDNA-Standard formatiert.
public:
System::String ^ GetAscii(System::String ^ unicode, int index, int count);
public string GetAscii (string unicode, int index, int count);
member this.GetAscii : string * int * int -> string
Public Function GetAscii (unicode As String, index As Integer, count As Integer) As String
Parameter
- unicode
- String
Eine zu konvertierende Eingabezeichenfolge, die aus einer oder mehreren durch Bezeichnungstrennzeichen getrennten Domänennamensbezeichnungen besteht.
- index
- Int32
Ein nullbasierter Offset in unicode
, der den Anfang der Teilzeichenfolge angibt.
- count
- Int32
Die Anzahl von zu konvertierenden Zeichen in der Teilzeichenfolge, die an der durch index
in der unicode
-Zeichenfolge angegebenen Position beginnt.
Gibt zurück
Die Entsprechung der durch den unicode
-Parameter, den index
-Parameter und den count
-Parameter angegebenen Teilzeichenfolge, bestehend aus anzeigbaren Unicode-Zeichen im US-ASCII-Zeichenbereich (U+0020 bis U+007E) und formatiert entsprechend des IDNA-Standards.
Ausnahmen
unicode
ist null
.
index
oder count
ist kleiner als 0.
- oder -
index
ist größer als die Länge von unicode
.
- oder -
index
ist größer als die Länge von unicode
minus count
.
unicode
ist auf der Grundlage der AllowUnassigned-Eigenschaft, der UseStd3AsciiRules-Eigenschaft und dem IDNA-Standard ungültig.
Beispiele
Im folgenden Beispiel wird die GetAscii(String, Int32, Int32) -Methode verwendet, um einen internationalisierten Domänennamen in einen Domänennamen zu konvertieren, der dem IDNA-Standard entspricht. Die GetUnicode(String, Int32, Int32) -Methode konvertiert dann den standardisierten Domänennamen wieder in den ursprünglichen Domänennamen, ersetzt jedoch die ursprünglichen Bezeichnungstrennzeichen durch das Standardbezeichnungstrennzeichen.
// This example demonstrates the GetAscii and GetUnicode methods.
// For sake of illustration, this example uses the most complex
// form of those methods, not the most convenient.
using System;
using System.Globalization;
class Sample
{
public static void Main()
{
/*
Define a domain name consisting of the labels: GREEK SMALL LETTER
PI (U+03C0); IDEOGRAPHIC FULL STOP (U+3002); GREEK SMALL LETTER
THETA (U+03B8); FULLWIDTH FULL STOP (U+FF0E); and "com".
*/
string name = "\u03C0\u3002\u03B8\uFF0Ecom";
string international;
string nonInternational;
string msg1 = "the original non-internationalized \ndomain name:";
string msg2 = "Allow unassigned characters?: {0}";
string msg3 = "Use non-internationalized rules?: {0}";
string msg4 = "Convert the non-internationalized domain name to international format...";
string msg5 = "Display the encoded domain name:\n\"{0}\"";
string msg6 = "the encoded domain name:";
string msg7 = "Convert the internationalized domain name to non-international format...";
string msg8 = "the reconstituted non-internationalized \ndomain name:";
string msg9 = "Visually compare the code points of the reconstituted string to the " +
"original.\n" +
"Note that the reconstituted string contains standard label " +
"separators (U+002e).";
// ----------------------------------------------------------------------------
CodePoints(name, msg1);
// ----------------------------------------------------------------------------
IdnMapping idn = new IdnMapping();
Console.WriteLine(msg2, idn.AllowUnassigned);
Console.WriteLine(msg3, idn.UseStd3AsciiRules);
Console.WriteLine();
// ----------------------------------------------------------------------------
Console.WriteLine(msg4);
international = idn.GetAscii(name, 0, name.Length);
Console.WriteLine(msg5, international);
Console.WriteLine();
CodePoints(international, msg6);
// ----------------------------------------------------------------------------
Console.WriteLine(msg7);
nonInternational = idn.GetUnicode(international, 0, international.Length);
CodePoints(nonInternational, msg8);
Console.WriteLine(msg9);
}
// ----------------------------------------------------------------------------
static void CodePoints(string value, string title)
{
Console.WriteLine("Display the Unicode code points of {0}", title);
foreach (char c in value)
{
Console.Write("{0:x4} ", Convert.ToInt32(c));
}
Console.WriteLine();
Console.WriteLine();
}
}
/*
This code example produces the following results:
Display the Unicode code points of the original non-internationalized
domain name:
03c0 3002 03b8 ff0e 0063 006f 006d
Allow unassigned characters?: False
Use non-internationalized rules?: False
Convert the non-internationalized domain name to international format...
Display the encoded domain name:
"xn--1xa.xn--txa.com"
Display the Unicode code points of the encoded domain name:
0078 006e 002d 002d 0031 0078 0061 002e 0078 006e 002d 002d 0074 0078 0061 002e 0063 006f
006d
Convert the internationalized domain name to non-international format...
Display the Unicode code points of the reconstituted non-internationalized
domain name:
03c0 002e 03b8 002e 0063 006f 006d
Visually compare the code points of the reconstituted string to the original.
Note that the reconstituted string contains standard label separators (U+002e).
*/
' This example demonstrates the GetAscii and GetUnicode methods.
' For sake of illustration, this example uses the most complex
' form of those methods, not the most convenient.
Imports System.Globalization
Class Sample
Public Shared Sub Main()
' Define a domain name consisting of the labels: GREEK SMALL LETTER
' PI (U+03C0); IDEOGRAPHIC FULL STOP (U+3002); GREEK SMALL LETTER
' THETA (U+03B8); FULLWIDTH FULL STOP (U+FF0E); and "com".
Dim name As String = "π。θ.com"
Dim international As String
Dim nonInternational As String
Dim msg1 As String = "the original non-internationalized " & vbCrLf & "domain name:"
Dim msg2 As String = "Allow unassigned characters?: {0}"
Dim msg3 As String = "Use non-internationalized rules?: {0}"
Dim msg4 As String = "Convert the non-internationalized domain name to international format..."
Dim msg5 As String = "Display the encoded domain name:" & vbCrLf & """{0}"""
Dim msg6 As String = "the encoded domain name:"
Dim msg7 As String = "Convert the internationalized domain name to non-international format..."
Dim msg8 As String = "the reconstituted non-internationalized " & vbCrLf & "domain name:"
Dim msg9 As String = "Visually compare the code points of the reconstituted string to the " & _
"original." & vbCrLf & _
"Note that the reconstituted string contains standard label " & _
"separators (U+002e)."
' ----------------------------------------------------------------------------
CodePoints(name, msg1)
' ----------------------------------------------------------------------------
Dim idn As New IdnMapping()
Console.WriteLine(msg2, idn.AllowUnassigned)
Console.WriteLine(msg3, idn.UseStd3AsciiRules)
Console.WriteLine()
' ----------------------------------------------------------------------------
Console.WriteLine(msg4)
international = idn.GetAscii(name, 0, name.Length)
Console.WriteLine(msg5, international)
Console.WriteLine()
CodePoints(international, msg6)
' ----------------------------------------------------------------------------
Console.WriteLine(msg7)
nonInternational = idn.GetUnicode(international, 0, international.Length)
CodePoints(nonInternational, msg8)
Console.WriteLine(msg9)
End Sub
' ----------------------------------------------------------------------------
Shared Sub CodePoints(ByVal value As String, ByVal title As String)
Console.WriteLine("Display the Unicode code points of {0}", title)
Dim c As Char
For Each c In value
Console.Write("{0:x4} ", Convert.ToInt32(c))
Next c
Console.WriteLine()
Console.WriteLine()
End Sub
End Class
'
'This code example produces the following results:
'
'Display the Unicode code points of the original non-internationalized
'domain name:
'03c0 3002 03b8 ff0e 0063 006f 006d
'
'Allow unassigned characters?: False
'Use non-internationalized rules?: False
'
'Convert the non-internationalized domain name to international format...
'Display the encoded domain name:
'"xn--1xa.xn--txa.com"
'
'Display the Unicode code points of the encoded domain name:
'0078 006e 002d 002d 0031 0078 0061 002e 0078 006e 002d 002d 0074 0078 0061 002e 0063 006f
'006d
'
'Convert the internationalized domain name to non-international format...
'Display the Unicode code points of the reconstituted non-internationalized
'domain name:
'03c0 002e 03b8 002e 0063 006f 006d
'
'Visually compare the code points of the reconstituted string to the original.
'Note that the reconstituted string contains standard label separators (U+002e).
'
Hinweise
Die Unicode
Parameter , index
und count
definieren eine Teilzeichenfolge mit einer oder mehreren Bezeichnungen, die aus gültigen Unicode-Zeichen bestehen. Die Bezeichnungen werden durch Bezeichnungstrennzeichen getrennt. Das erste Zeichen der Teilzeichenfolge kann nicht mit einem Bezeichnungstrennzeichen beginnen, aber es kann ein Trennzeichen enthalten und optional mit diesem enden. Die Bezeichnungstrennzeichen sind FULL STOP (Punkt, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) und HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Der Domänenname "www.adatum.com" besteht beispielsweise aus den Bezeichnungen "www", "adatum" und "com", die durch Punkte getrennt sind.
Eine Bezeichnung darf keines der folgenden Zeichen enthalten:
Unicode-Steuerzeichen von U+0001 bis U+001F und U+007F.
Nicht zugewiesene Unicode-Zeichen, abhängig vom Wert der AllowUnassigned Eigenschaft.
Nicht standardmäßige Zeichen im US-ASCII-Zeichenbereich, z. B. die Zeichen LEERZEICHEN (U+0020), AUSRUFEZEICHEN (U+0021) und LOW LINE (U+005F), abhängig vom Wert der UseStd3AsciiRules Eigenschaft.
Zeichen, die in einer bestimmten Version des IDNA-Standards verboten sind. Weitere Informationen zu unzulässigen Zeichen finden Sie unter RFC 3454: Vorbereitung internationalisierter Zeichenfolgen ("Stringprep") für IDNA 2003 und RFC 5982: Die Unicode-Codepunkte und internationalisierten Domänennamen für Anwendungen für IDNA 2008.
Die GetAscii -Methode konvertiert alle Bezeichnungstrennzeichen in FULL STOP (Punkt, U+002E). Wenn die Teilzeichenfolge keine Zeichen außerhalb des US-ASCII-Zeichenbereichs enthält und keine Zeichen innerhalb des US-ASCII-Zeichenbereichs verboten sind, gibt die Methode die Teilzeichenfolge unverändert zurück.
Hinweise für Aufrufer
Im .NET Framework 4.5 unterstützt die IdnMapping Klasse je nach verwendetem Betriebssystem verschiedene Versionen des IDNA-Standards:
Wenn sie auf Windows 8 ausgeführt wird, unterstützt sie die Version 2008 des IDNA-Standards, der in RFC 5891: Internationalisierte Domänennamen in Anwendungen (IDNA): Protocol beschrieben ist.
Wenn sie auf früheren Versionen des Windows-Betriebssystems ausgeführt wird, unterstützt es die Version 2003 des Standards, der in RFC 3490: Internationalisieren von Domänennamen in Anwendungen (IDNA) beschrieben ist.
Unter Unicode Technical Standard #46: IDNA Compatibility Processing (Unicode Technical Standard #46: IDNA-Kompatibilitätsverarbeitung ) finden Sie informationen zu den Unterschieden in der Art und Weise, wie diese Standards bestimmte Zeichensätze behandeln.