IdnMapping.GetAscii Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Codifica uma cadeia de caracteres de rótulos de nome de domínio que incluem caracteres Unicode fora do intervalo de caracteres US-ASCII para uma cadeia de caracteres Unicode exibíveis no intervalo de caracteres US-ASCII (U+0020 a U+007E). A cadeia de caracteres é formatada de acordo com o padrão IDNA.
Sobrecargas
GetAscii(String) |
Codifica uma cadeia de caracteres de rótulos de nome de domínio que consistem em caracteres Unicode para uma cadeia de caracteres Unicode exibíveis no intervalo de caracteres US-ASCII. A cadeia de caracteres é formatada de acordo com o padrão IDNA. |
GetAscii(String, Int32) |
Codifica uma subcadeia de caracteres de rótulos de nome de domínio que incluem caracteres Unicode fora do intervalo de caracteres US-ASCII. A subcadeia de caracteres é convertida em uma cadeia de caracteres Unicode exibíveis no intervalo de caracteres US-ASCII e é formatada segundo o padrão IDNA. |
GetAscii(String, Int32, Int32) |
Codifica o número especificado de caracteres em uma subcadeia de caracteres de rótulos de nome de domínio que incluem caracteres Unicode fora do intervalo de caracteres US-ASCII. A subcadeia de caracteres é convertida em uma cadeia de caracteres Unicode exibíveis no intervalo de caracteres US-ASCII e é formatada segundo o padrão IDNA. |
GetAscii(String)
- Origem:
- IdnMapping.cs
- Origem:
- IdnMapping.cs
- Origem:
- IdnMapping.cs
Codifica uma cadeia de caracteres de rótulos de nome de domínio que consistem em caracteres Unicode para uma cadeia de caracteres Unicode exibíveis no intervalo de caracteres US-ASCII. A cadeia de caracteres é formatada de acordo com o padrão IDNA.
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
Parâmetros
- unicode
- String
A cadeia de caracteres a converter, que consiste em um ou mais rótulos de nome de domínio delimitados com separadores de rótulo.
Retornos
O equivalente à cadeia de caracteres especificada pelo parâmetro unicode
, consistindo de caracteres Unicode exibíveis no intervalo de caracteres US-ASCII (U+0020 a U+007E) e formatados de acordo com o padrão IDNA.
Exceções
unicode
é null
.
unicode
é inválido, com base nas propriedades AllowUnassigned e UseStd3AsciiRules e no padrão IDNA.
Exemplos
O exemplo a seguir usa o GetAscii(String) método para converter uma matriz de nomes de domínio internacionalizados em Punycode, que é um equivalente codificado que consiste em caracteres no intervalo de caracteres US-ASCII. Em GetUnicode(String) seguida, o método converte o nome de domínio punycode de volta no nome de domínio original, mas substitui os separadores de rótulo originais pelo separador de rótulo padrão.
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
Comentários
O unicode
parâmetro especifica uma cadeia de caracteres de um ou mais rótulos que consistem em caracteres Unicode válidos. Os rótulos são separados por separadores de rótulo. O unicode
parâmetro não pode começar com um separador de rótulo, mas pode incluir e, opcionalmente, terminar com um separador. Os separadores de rótulo são FULL STOP (period, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) e HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Por exemplo, o nome de domínio "www.adatum.com" consiste nos rótulos , "www", "adatum" e "com", separados por pontos.
Um rótulo não pode conter nenhum dos seguintes caracteres:
Caracteres de controle Unicode de U+0001 a U+001F e U+007F.
Caracteres Unicode não atribuídos, se o valor da AllowUnassigned propriedade for
false
.Caracteres não padrão no intervalo de caracteres US-ASCII, como os caracteres SPACE (U+0020), EXCLAMATION MARK (U+0021) e LOW LINE (U+005F), se o valor da UseStd3AsciiRules propriedade for
true
.Caracteres proibidos por uma versão específica do padrão IDNA. Para obter mais informações sobre caracteres proibidos, consulte RFC 3454: Preparação de cadeias de caracteres internacionalizadas ("stringprep") para IDNA 2003 e RFC 5982: os pontos de código Unicode e nomes de domínio internacionalizados para aplicativos para IDNA 2008.
O GetAscii método converte todos os separadores de rótulo em FULL STOP (ponto final, U+002E).
Se unicode
não contiver caracteres fora do intervalo de caracteres US-ASCII e nenhum caractere dentro do intervalo de caracteres US-ASCII for proibido, o método retornará unicode
inalterado.
Notas aos Chamadores
No .NET Framework 4.5, a classe dá suporte a IdnMapping diferentes versões do padrão IDNA, dependendo do sistema operacional em uso:
Quando executado no Windows 8, ele dá suporte à versão 2008 do padrão IDNA descrito pelo RFC 5891: Nomes de Domínio Internacionalizados em Aplicativos (IDNA): Protocolo.
Quando executado em versões anteriores do sistema operacional Windows, ele dá suporte à versão 2003 do padrão descrito pelo RFC 3490: Internacionalizando nomes de domínio em aplicativos (IDNA).
Consulte Unicode Technical Standard nº 46: Processamento de compatibilidade IDNA para obter as diferenças na maneira como esses padrões lidam com conjuntos específicos de caracteres.
Aplica-se a
GetAscii(String, Int32)
- Origem:
- IdnMapping.cs
- Origem:
- IdnMapping.cs
- Origem:
- IdnMapping.cs
Codifica uma subcadeia de caracteres de rótulos de nome de domínio que incluem caracteres Unicode fora do intervalo de caracteres US-ASCII. A subcadeia de caracteres é convertida em uma cadeia de caracteres Unicode exibíveis no intervalo de caracteres US-ASCII e é formatada segundo o padrão IDNA.
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
Parâmetros
- unicode
- String
A cadeia de caracteres a converter, que consiste em um ou mais rótulos de nome de domínio delimitados com separadores de rótulo.
- index
- Int32
Um deslocamento de base zero em unicode
que especifica o início da subcadeia de caracteres a converter. A operação de conversão continua até o final da cadeia de caracteres unicode
.
Retornos
O equivalente à subcadeia de caracteres especificada pelos parâmetros unicode
e index
, consistindo de caracteres Unicode exibíveis no intervalo de caracteres US-ASCII (U+0020 a U+007E) e formatados de acordo com o padrão IDNA.
Exceções
unicode
é null
.
index
é menor que zero.
- ou -
index
é maior que o comprimento do unicode
.
unicode
é inválido, com base nas propriedades AllowUnassigned e UseStd3AsciiRules e no padrão IDNA.
Comentários
Os unicode
parâmetros e index
definem uma subcadeia de caracteres com um ou mais rótulos que consistem em caracteres Unicode válidos. Os rótulos são separados por separadores de rótulo. O primeiro caractere da subcadeia de caracteres não pode começar com um separador de rótulo, mas pode incluir e, opcionalmente, terminar com um separador. Os separadores de rótulo são FULL STOP (period, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) e HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Por exemplo, o nome de domínio "www.adatum.com" consiste nos rótulos , "www", "adatum" e "com", separados por pontos.
Um rótulo não pode conter nenhum dos seguintes caracteres:
Caracteres de controle Unicode de U+0001 a U+001F e U+007F.
Caracteres Unicode não atribuídos, dependendo do valor da AllowUnassigned propriedade.
Caracteres não padrão no intervalo de caracteres US-ASCII, como os caracteres SPACE (U+0020), EXCLAMATION MARK (U+0021) e LOW LINE (U+005F), dependendo do valor da UseStd3AsciiRules propriedade.
Caracteres proibidos por uma versão específica do padrão IDNA. Para obter mais informações sobre caracteres proibidos, consulte RFC 3454: Preparação de cadeias de caracteres internacionalizadas ("stringprep") para IDNA 2003 e RFC 5982: os pontos de código Unicode e nomes de domínio internacionalizados para aplicativos para IDNA 2008.
O GetAscii método converte todos os separadores de rótulo em FULL STOP (ponto final, U+002E).
Se unicode
não contiver caracteres fora do intervalo de caracteres US-ASCII e nenhum caractere dentro do intervalo de caracteres US-ASCII for proibido, o método retornará unicode
inalterado.
Notas aos Chamadores
No .NET Framework 4.5, a classe dá suporte a IdnMapping diferentes versões do padrão IDNA, dependendo do sistema operacional em uso:
Quando executado no Windows 8, ele dá suporte à versão 2008 do padrão IDNA descrito pelo RFC 5891: Nomes de Domínio Internacionalizados em Aplicativos (IDNA): Protocolo.
Quando executado em versões anteriores do sistema operacional Windows, ele dá suporte à versão 2003 do padrão descrito pelo RFC 3490: Internacionalizando nomes de domínio em aplicativos (IDNA).
Consulte Unicode Technical Standard nº 46: Processamento de compatibilidade IDNA para obter as diferenças na maneira como esses padrões lidam com conjuntos específicos de caracteres.
Aplica-se a
GetAscii(String, Int32, Int32)
- Origem:
- IdnMapping.cs
- Origem:
- IdnMapping.cs
- Origem:
- IdnMapping.cs
Codifica o número especificado de caracteres em uma subcadeia de caracteres de rótulos de nome de domínio que incluem caracteres Unicode fora do intervalo de caracteres US-ASCII. A subcadeia de caracteres é convertida em uma cadeia de caracteres Unicode exibíveis no intervalo de caracteres US-ASCII e é formatada segundo o padrão IDNA.
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
Parâmetros
- unicode
- String
A cadeia de caracteres a converter, que consiste em um ou mais rótulos de nome de domínio delimitados com separadores de rótulo.
- index
- Int32
Um deslocamento de base zero em unicode
que especifica o início da subcadeia de caracteres.
- count
- Int32
O número de caracteres a converter na subcadeia de caracteres que começa na posição especificada por index
na cadeia de caracteres unicode
.
Retornos
O equivalente à subcadeia de caracteres especificada pelos parâmetros unicode
, index
e count
, consistindo de caracteres Unicode exibíveis no intervalo de caracteres US-ASCII (U+0020 a U+007E) e formatados de acordo com o padrão IDNA.
Exceções
unicode
é null
.
index
ou count
é menor que zero.
- ou -
index
é maior que o comprimento do unicode
.
- ou -
index
é maior que o tamanho de unicode
menos count
.
unicode
é inválido, com base nas propriedades AllowUnassigned e UseStd3AsciiRules e no padrão IDNA.
Exemplos
O exemplo a seguir usa o GetAscii(String, Int32, Int32) método para converter um nome de domínio internacionalizado em um nome de domínio que esteja em conformidade com o padrão IDNA. Em GetUnicode(String, Int32, Int32) seguida, o método converte o nome de domínio padronizado de volta no nome de domínio original, mas substitui os separadores de rótulo originais pelo separador de rótulo padrão.
// 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).
'
Comentários
Os Unicode
parâmetros , index
e count
definem uma subcadeia de caracteres com um ou mais rótulos que consistem em caracteres Unicode válidos. Os rótulos são separados por separadores de rótulo. O primeiro caractere da subcadeia de caracteres não pode começar com um separador de rótulo, mas pode incluir e, opcionalmente, terminar com um separador. Os separadores de rótulo são FULL STOP (period, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) e HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Por exemplo, o nome de domínio "www.adatum.com" consiste nos rótulos , "www", "adatum" e "com", separados por pontos.
Um rótulo não pode conter nenhum dos seguintes caracteres:
Caracteres de controle Unicode de U+0001 a U+001F e U+007F.
Caracteres Unicode não atribuídos, dependendo do valor da AllowUnassigned propriedade.
Caracteres não padrão no intervalo de caracteres US-ASCII, como os caracteres SPACE (U+0020), EXCLAMATION MARK (U+0021) e LOW LINE (U+005F), dependendo do valor da UseStd3AsciiRules propriedade.
Caracteres proibidos por uma versão específica do padrão IDNA. Para obter mais informações sobre caracteres proibidos, consulte RFC 3454: Preparação de cadeias de caracteres internacionalizadas ("stringprep") para IDNA 2003 e RFC 5982: os pontos de código Unicode e nomes de domínio internacionalizados para aplicativos para IDNA 2008.
O GetAscii método converte todos os separadores de rótulo em FULL STOP (ponto final, U+002E). Se a subcadeia de caracteres não contiver caracteres fora do intervalo de caracteres US-ASCII e nenhum caractere dentro do intervalo de caracteres US-ASCII for proibido, o método retornará a subcadeia de caracteres inalterada.
Notas aos Chamadores
No .NET Framework 4.5, a classe dá suporte a IdnMapping diferentes versões do padrão IDNA, dependendo do sistema operacional em uso:
Quando executado no Windows 8, ele dá suporte à versão 2008 do padrão IDNA descrito pelo RFC 5891: Nomes de Domínio Internacionalizados em Aplicativos (IDNA): Protocolo.
Quando executado em versões anteriores do sistema operacional Windows, ele dá suporte à versão 2003 do padrão descrito pelo RFC 3490: Internacionalizando nomes de domínio em aplicativos (IDNA).
Consulte Unicode Technical Standard nº 46: Processamento de compatibilidade IDNA para obter as diferenças na maneira como esses padrões lidam com conjuntos específicos de caracteres.