IdnMapping.GetAscii Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Codeert een tekenreeks met domeinnaamlabels die Unicode-tekens bevatten buiten het US-ASCII tekenbereik naar een tekenreeks met weer te geven Unicode-tekens in het US-ASCII tekenbereik (U+0020 tot U+007E). De tekenreeks is opgemaakt volgens de IDNA-standaard.
Overloads
| Name | Description |
|---|---|
| GetAscii(String) |
Codeert een tekenreeks met domeinnaamlabels die uit Unicode-tekens bestaan tot een tekenreeks met weer te geven Unicode-tekens in het US-ASCII tekenbereik. De tekenreeks is opgemaakt volgens de IDNA-standaard. |
| GetAscii(String, Int32) |
Codeert een subtekenreeks van domeinnaamlabels die Unicode-tekens bevatten buiten het US-ASCII tekenbereik. De subtekenreeks wordt geconverteerd naar een tekenreeks met weer te geven Unicode-tekens in het US-ASCII tekenbereik en wordt opgemaakt volgens de IDNA-standaard. |
| GetAscii(String, Int32, Int32) |
Codeert het opgegeven aantal tekens in een subtekenreeks van domeinnaamlabels die Unicode-tekens bevatten buiten het US-ASCII tekenbereik. De subtekenreeks wordt geconverteerd naar een tekenreeks met weer te geven Unicode-tekens in het US-ASCII tekenbereik en wordt opgemaakt volgens de IDNA-standaard. |
GetAscii(String)
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
Codeert een tekenreeks met domeinnaamlabels die uit Unicode-tekens bestaan tot een tekenreeks met weer te geven Unicode-tekens in het US-ASCII tekenbereik. De tekenreeks is opgemaakt volgens de IDNA-standaard.
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
Parameters
- unicode
- String
De tekenreeks die moet worden geconverteerd, die bestaat uit een of meer domeinnaamlabels die zijn gescheiden door labelscheidingstekens.
Retouren
Het equivalent van de tekenreeks die is opgegeven door de unicode parameter, bestaande uit weer te geven Unicode-tekens in het US-ASCII tekenbereik (U+0020 tot U+007E) en opgemaakt volgens de IDNA-standaard.
Uitzonderingen
unicode is null.
unicode 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. Dit is een gecodeerd equivalent dat bestaat uit tekens in het US-ASCII tekenbereik. 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
De unicode parameter geeft een tekenreeks op van een of meer labels die bestaan uit geldige Unicode-tekens. De labels worden gescheiden door labelscheidingstekens. De unicode parameter kan niet beginnen met een labelscheidingsteken, maar kan ook een scheidingsteken bevatten en eventueel beëindigen. De labelscheidingstekens zijn FULL STOP (punt, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) en HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). De domeinnaam "www.adatum.com" bestaat bijvoorbeeld uit de labels, "www", "adatum" en "com", gescheiden door punten.
Een label mag geen van de volgende tekens bevatten:
Unicode-besturingstekens van U+0001 tot en met U+001F en U+007F.
Niet-toegewezen Unicode-tekens, als de waarde van de AllowUnassigned eigenschap is
false.Niet-standaardtekens in het US-ASCII tekenbereik, zoals de tekens SPATIE (U+0020), UITROEPTEKEN (U+0021) en LOW LINE (U+005F), als de waarde van de UseStd3AsciiRules eigenschap is
true.Tekens die niet zijn toegestaan door een specifieke versie van de IDNA-standaard. Zie RFC 3454: Voorbereiding van geinternationaliseerde tekenreeksen ('stringprep') voor IDNA 2003 en RFC 5982: De Unicode-codepunten en geinternationaliseerde domeinnamen voor toepassingen voor IDNA 2008 voor meer informatie over verboden tekens.
Met de GetAscii methode worden alle labelscheidingstekens geconverteerd naar FULL STOP (punt, U+002E).
Als unicode er geen tekens buiten het US-ASCII tekenbereik staan en geen tekens binnen het US-ASCII tekenbereik zijn verboden, wordt de methode ongewijzigd geretourneerd unicode .
Notities voor bellers
In het .NET Framework 4.5 ondersteunt de klasse IdnMapping verschillende versies van de IDNA-standaard, afhankelijk van het besturingssysteem dat wordt gebruikt:
Wanneer deze wordt uitgevoerd op Windows 8, ondersteunt deze de 2008-versie van de IDNA-standaard die wordt beschreven door RFC 5891: Geinternationaliseerde domeinnamen in toepassingen (IDNA): Protocol.
Wanneer het wordt uitgevoerd op eerdere versies van het Windows besturingssysteem, ondersteunt het de 2003-versie van de standaard die wordt beschreven door RFC 3490: Domeinnamen internationaliseren in toepassingen (IDNA).
Zie Unicode Technical Standard #46: IDNA-compatibiliteitsverwerking voor de verschillen in de manier waarop deze standaarden bepaalde sets tekens verwerken.
Van toepassing op
GetAscii(String, Int32)
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
Codeert een subtekenreeks van domeinnaamlabels die Unicode-tekens bevatten buiten het US-ASCII tekenbereik. De subtekenreeks wordt geconverteerd naar een tekenreeks met weer te geven Unicode-tekens in het US-ASCII tekenbereik en wordt opgemaakt volgens de IDNA-standaard.
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
Parameters
- unicode
- String
De tekenreeks die moet worden geconverteerd, die bestaat uit een of meer domeinnaamlabels die zijn gescheiden door labelscheidingstekens.
- index
- Int32
Een offset op basis van nul waarin unicode het begin van de subtekenreeks wordt opgegeven die moet worden geconverteerd. De conversiebewerking gaat door naar het einde van de unicode tekenreeks.
Retouren
Het equivalent van de subtekenreeks die is opgegeven door de unicode en index parameters, bestaande uit weergegeven Unicode-tekens in het US-ASCII tekenbereik (U+0020 tot U+007E) en opgemaakt volgens de IDNA-standaard.
Uitzonderingen
unicode is null.
index is kleiner dan nul.
– of –
index is groter dan de lengte van unicode.
unicode is ongeldig op basis van de AllowUnassigned en UseStd3AsciiRules eigenschappen en de IDNA-standaard.
Opmerkingen
De unicode en index parameters definiëren een subtekenreeks met een of meer labels die bestaan uit geldige Unicode-tekens. De labels worden gescheiden door labelscheidingstekens. Het eerste teken van de subtekenreeks kan niet beginnen met een labelscheidingsteken, maar kan ook een scheidingsteken bevatten en eventueel beëindigen. De labelscheidingstekens zijn FULL STOP (punt, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) en HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). De domeinnaam "www.adatum.com" bestaat bijvoorbeeld uit de labels, "www", "adatum" en "com", gescheiden door punten.
Een label mag geen van de volgende tekens bevatten:
Unicode-besturingstekens van U+0001 tot en met U+001F en U+007F.
Niet-toegewezen Unicode-tekens, afhankelijk van de waarde van de AllowUnassigned eigenschap.
Niet-standaardtekens in het US-ASCII tekenbereik, zoals de tekens SPATIE (U+0020), UITROEPTEKEN (U+0021) en LOW LINE (U+005F), afhankelijk van de waarde van de UseStd3AsciiRules eigenschap.
Tekens die niet zijn toegestaan door een specifieke versie van de IDNA-standaard. Zie RFC 3454: Voorbereiding van geinternationaliseerde tekenreeksen ('stringprep') voor IDNA 2003 en RFC 5982: De Unicode-codepunten en geinternationaliseerde domeinnamen voor toepassingen voor IDNA 2008 voor meer informatie over verboden tekens.
Met de GetAscii methode worden alle labelscheidingstekens geconverteerd naar FULL STOP (punt, U+002E).
Als unicode er geen tekens buiten het US-ASCII tekenbereik staan en geen tekens binnen het US-ASCII tekenbereik zijn verboden, wordt de methode ongewijzigd geretourneerd unicode .
Notities voor bellers
In het .NET Framework 4.5 ondersteunt de klasse IdnMapping verschillende versies van de IDNA-standaard, afhankelijk van het besturingssysteem dat wordt gebruikt:
Wanneer deze wordt uitgevoerd op Windows 8, ondersteunt deze de 2008-versie van de IDNA-standaard die wordt beschreven door RFC 5891: Geinternationaliseerde domeinnamen in toepassingen (IDNA): Protocol.
Wanneer het wordt uitgevoerd op eerdere versies van het Windows besturingssysteem, ondersteunt het de 2003-versie van de standaard die wordt beschreven door RFC 3490: Domeinnamen internationaliseren in toepassingen (IDNA).
Zie Unicode Technical Standard #46: IDNA-compatibiliteitsverwerking voor de verschillen in de manier waarop deze standaarden bepaalde sets tekens verwerken.
Van toepassing op
GetAscii(String, Int32, Int32)
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
- Bron:
- IdnMapping.cs
Codeert het opgegeven aantal tekens in een subtekenreeks van domeinnaamlabels die Unicode-tekens bevatten buiten het US-ASCII tekenbereik. De subtekenreeks wordt geconverteerd naar een tekenreeks met weer te geven Unicode-tekens in het US-ASCII tekenbereik en wordt opgemaakt volgens de IDNA-standaard.
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
Parameters
- unicode
- String
De tekenreeks die moet worden geconverteerd, die bestaat uit een of meer domeinnaamlabels die zijn gescheiden door labelscheidingstekens.
- index
- Int32
Een offset op basis van nul waarin unicode 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 unicode tekenreeks.
Retouren
Het equivalent van de subtekenreeks die is opgegeven door de unicode, indexen count parameters, bestaande uit weergegeven Unicode-tekens in het US-ASCII tekenbereik (U+0020 tot U+007E) en opgemaakt volgens de IDNA-standaard.
Uitzonderingen
unicode is null.
index of count kleiner is dan nul.
– of –
index is groter dan de lengte van unicode.
– of –
index is groter dan de lengte van unicode min count.
unicode is ongeldig op basis van de AllowUnassigned en UseStd3AsciiRules eigenschappen en de IDNA-standaard.
Voorbeelden
In het volgende voorbeeld wordt de GetAscii(String, Int32, Int32) methode gebruikt om een geinternationaliseerde domeinnaam te converteren naar een domeinnaam die voldoet aan de IDNA-standaard. De GetUnicode(String, Int32, Int32) methode converteert vervolgens de gestandaardiseerde domeinnaam terug naar de oorspronkelijke domeinnaam, maar vervangt de oorspronkelijke labelscheidingstekens door het standaardlabelscheidingsteken.
// 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).
'
Opmerkingen
De Unicodeparameters , indexen count parameters definiëren een subtekenreeks met een of meer labels die bestaan uit geldige Unicode-tekens. De labels worden gescheiden door labelscheidingstekens. Het eerste teken van de subtekenreeks kan niet beginnen met een labelscheidingsteken, maar kan ook een scheidingsteken bevatten en eventueel beëindigen. De labelscheidingstekens zijn FULL STOP (punt, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) en HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). De domeinnaam "www.adatum.com" bestaat bijvoorbeeld uit de labels, "www", "adatum" en "com", gescheiden door punten.
Een label mag geen van de volgende tekens bevatten:
Unicode-besturingstekens van U+0001 tot en met U+001F en U+007F.
Niet-toegewezen Unicode-tekens, afhankelijk van de waarde van de AllowUnassigned eigenschap.
Niet-standaardtekens in het US-ASCII tekenbereik, zoals de tekens SPATIE (U+0020), UITROEPTEKEN (U+0021) en LOW LINE (U+005F), afhankelijk van de waarde van de UseStd3AsciiRules eigenschap.
Tekens die niet zijn toegestaan door een specifieke versie van de IDNA-standaard. Zie RFC 3454: Voorbereiding van geinternationaliseerde tekenreeksen ('stringprep') voor IDNA 2003 en RFC 5982: De Unicode-codepunten en geinternationaliseerde domeinnamen voor toepassingen voor IDNA 2008 voor meer informatie over verboden tekens.
Met de GetAscii methode worden alle labelscheidingstekens geconverteerd naar FULL STOP (punt, U+002E). Als de subtekenreeks geen tekens bevat buiten het US-ASCII tekenbereik en er geen tekens binnen het US-ASCII tekenbereik zijn verboden, retourneert de methode de subtekenreeks ongewijzigd.
Notities voor bellers
In het .NET Framework 4.5 ondersteunt de klasse IdnMapping verschillende versies van de IDNA-standaard, afhankelijk van het besturingssysteem dat wordt gebruikt:
Wanneer deze wordt uitgevoerd op Windows 8, ondersteunt deze de 2008-versie van de IDNA-standaard die wordt beschreven door RFC 5891: Geinternationaliseerde domeinnamen in toepassingen (IDNA): Protocol.
Wanneer het wordt uitgevoerd op eerdere versies van het Windows besturingssysteem, ondersteunt het de 2003-versie van de standaard die wordt beschreven door RFC 3490: Domeinnamen internationaliseren in toepassingen (IDNA).
Zie Unicode Technical Standard #46: IDNA-compatibiliteitsverwerking voor de verschillen in de manier waarop deze standaarden bepaalde sets tekens verwerken.