IdnMapping.GetAscii Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Кодирует строку меток доменных имен, включающую символы Юникода вне диапазона символов US-ASCII, в строку отображаемых символов Юникода в диапазоне символов US-ASCII (от U+0020 до U+007E). Строка форматируется в соответствии со стандартом IDNA.
Перегрузки
GetAscii(String) |
Кодирует строку меток доменных имен, в которой содержатся символы Юникода, в строку отображаемых символов Юникода в диапазоне символов US-ASCII. Строка форматируется в соответствии со стандартом IDNA. |
GetAscii(String, Int32) |
Кодирует подстроку меток имени домена, включающих знаки юникода, выходящие за диапазон символов US-ASCII. Подстрока преобразуется в строку отображаемых символов Юникода в диапазоне символов US-ASCII и форматируется в соответствии со стандартом IDNA. |
GetAscii(String, Int32, Int32) |
Кодирует указанное количество символов в подстроке меток доменных имен, включающих символы Юникода за пределами диапазона символов US-ASCII. Подстрока преобразуется в строку отображаемых символов Юникода в диапазоне символов US-ASCII и форматируется в соответствии со стандартом IDNA. |
GetAscii(String)
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
Кодирует строку меток доменных имен, в которой содержатся символы Юникода, в строку отображаемых символов Юникода в диапазоне символов US-ASCII. Строка форматируется в соответствии со стандартом 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
Параметры
- unicode
- String
Строка для преобразования, которая состоит из одной или нескольких меток доменного имени, разделенных особыми символами.
Возвращаемое значение
Эквивалент строки, указанной параметром unicode
, состоящей из отображаемых символов Юникода в диапазоне символов US-ASCII (с U+0020 до U+007E) и отформатированной в соответствии со стандартом IDNA.
Исключения
unicode
имеет значение null
.
Параметр unicode
не является допустимым на основе свойств AllowUnassigned и UseStd3AsciiRules, а также стандарта IDNA,
Примеры
В следующем примере метод используется GetAscii(String) для преобразования массива международных доменных имен в Punycode, который является закодированным эквивалентом, состоящим из символов в диапазоне символов US-ASCII. Затем GetUnicode(String) метод преобразует доменное имя Punycode обратно в исходное доменное имя, но заменяет исходные разделители меток стандартным разделителем меток.
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
Комментарии
Параметр unicode
задает строку из одной или нескольких меток, состоящих из допустимых символов Юникода. Метки разделяются разделителями меток. Параметр unicode
не может начинаться с разделителя меток, но он может включать и при необходимости заканчиваться разделителем. Разделители меток: FULL STOP (точка, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) и HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Например, доменное имя "www.adatum.com" состоит из меток "www", "adatum" и "com", разделенных точками.
Метка не может содержать следующие символы:
Управляющие символы Юникода от U+0001 до U+001F и U+007F.
Неназначенные символы Юникода, если свойство имеет
false
значение AllowUnassigned .Нестандартные символы в диапазоне символов US-ASCII, такие как ПРОБЕЛ (U+0020), ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК (U+0021) и СИМВОЛЫ LOW LINE (U+005F), если значение UseStd3AsciiRules свойства равно
true
.Символы, запрещенные определенной версией стандарта IDNA. Дополнительные сведения о запрещенных символах см. в разделах RFC 3454: Подготовка международных строк ("stringprep") для IDNA 2003 и RFC 5982: Кодовые точки Юникода и международные доменные имена для приложений для IDNA 2008.
Метод GetAscii преобразует все разделители меток в FULL STOP (точка, U+002E).
Если unicode
не содержит символов за пределами диапазона символов US-ASCII и символы в диапазоне символов US-ASCII не запрещены, метод возвращает unicode
без изменений.
Примечания для тех, кто вызывает этот метод
В платформа .NET Framework 4.5 IdnMapping класс поддерживает различные версии стандарта IDNA в зависимости от используемой операционной системы:
При запуске на Windows 8 она поддерживает версию 2008 года стандарта IDNA, описанную rfc 5891: internationalized domain names in Applications (IDNA): Protocol.
При запуске в более ранних версиях операционной системы Windows она поддерживает стандарт 2003, описанный в документе RFC 3490: интернационализация доменных имен в приложениях (IDNA).
Различия в том, как эти стандарты обрабатывают определенные наборы символов, см. в разделе Технический стандарт Юникода No 46: обработка совместимости IDNA .
Применяется к
GetAscii(String, Int32)
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
Кодирует подстроку меток имени домена, включающих знаки юникода, выходящие за диапазон символов US-ASCII. Подстрока преобразуется в строку отображаемых символов Юникода в диапазоне символов US-ASCII и форматируется в соответствии со стандартом 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
Параметры
- unicode
- String
Строка для преобразования, которая состоит из одной или нескольких меток доменного имени, разделенных особыми символами.
- index
- Int32
Нулевое смещение в unicode
, которое указывает на начало подстроки для преобразования. Процедура преобразования продолжается до окончания строки unicode
.
Возвращаемое значение
Эквивалент подстроки, указанной параметрами unicode
и index
, состоящей из отображаемых символов Юникода в диапазоне символов US-ASCII (с U+0020 до U+007E) и отформатированной в соответствии со стандартом IDNA.
Исключения
unicode
имеет значение null
.
Значение параметра index
меньше нуля.
-или-
значение index
превышает длину параметра unicode
.
Параметр unicode
не является допустимым на основе свойств AllowUnassigned и UseStd3AsciiRules, а также стандарта IDNA,
Комментарии
Параметры unicode
и index
определяют подстроку с одной или несколькими метками, состоящими из допустимых символов Юникода. Метки разделяются разделителями меток. Первый символ подстроки не может начинаться с разделителя меток, но может включать и при необходимости заканчиваться разделителем. Разделители меток: FULL STOP (точка, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) и HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Например, доменное имя "www.adatum.com" состоит из меток "www", "adatum" и "com", разделенных точками.
Метка не может содержать следующие символы:
Управляющие символы Юникода от U+0001 до U+001F и U+007F.
Неназначенные символы Юникода в зависимости от значения AllowUnassigned свойства.
Нестандартные символы в диапазоне символов US-ASCII, такие как ПРОБЕЛ (U+0020), ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК (U+0021) и СИМВОЛЫ LOW LINE (U+005F), в зависимости от значения UseStd3AsciiRules свойства.
Символы, запрещенные определенной версией стандарта IDNA. Дополнительные сведения о запрещенных символах см. в разделах RFC 3454: Подготовка международных строк ("stringprep") для IDNA 2003 и RFC 5982: Кодовые точки Юникода и международные доменные имена для приложений для IDNA 2008.
Метод GetAscii преобразует все разделители меток в FULL STOP (точка, U+002E).
Если unicode
не содержит символов за пределами диапазона символов US-ASCII и символы в диапазоне символов US-ASCII не запрещены, метод возвращает unicode
без изменений.
Примечания для тех, кто вызывает этот метод
В платформа .NET Framework 4.5 IdnMapping класс поддерживает различные версии стандарта IDNA в зависимости от используемой операционной системы:
При запуске на Windows 8 она поддерживает версию 2008 года стандарта IDNA, описанную rfc 5891: internationalized domain names in Applications (IDNA): Protocol.
При запуске в более ранних версиях операционной системы Windows она поддерживает стандарт 2003, описанный в документе RFC 3490: интернационализация доменных имен в приложениях (IDNA).
Различия в том, как эти стандарты обрабатывают определенные наборы символов, см. в разделе Технический стандарт Юникода No 46: обработка совместимости IDNA .
Применяется к
GetAscii(String, Int32, Int32)
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
- Исходный код:
- IdnMapping.cs
Кодирует указанное число символов в подстроке меток доменных имен, включающих символы Юникода за пределами диапазона символов US-ASCII. Подстрока преобразуется в строку отображаемых символов Юникода в диапазоне символов US-ASCII и форматируется в соответствии со стандартом 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
Параметры
- unicode
- String
Строка для преобразования, которая состоит из одной или нескольких меток доменного имени, разделенных особыми символами.
- index
- Int32
Нулевое смещение в unicode
, которое указывает на начало подстроки.
- count
- Int32
Количество символов для преобразования в подстроку, которая начинается с места, указанного параметром index
в строке unicode
.
Возвращаемое значение
Эквивалент подстроки, указанной параметрами unicode
, index
и count
, состоящей из отображаемых символов Юникода в диапазоне символов US-ASCII (с U+0020 до U+007E) и отформатированной в соответствии со стандартом IDNA.
Исключения
unicode
имеет значение null
.
Значение параметра index
или count
меньше нуля.
-или-
Значение index
превышает длину unicode
.
-или-
длина значения index
больше, чем длина unicode
минус count
.
Параметр unicode
не является допустимым на основе свойств AllowUnassigned и UseStd3AsciiRules, а также стандарта IDNA,
Примеры
В следующем примере метод используется GetAscii(String, Int32, Int32) для преобразования международного доменного имени в доменное имя, которое соответствует стандарту IDNA. Затем GetUnicode(String, Int32, Int32) метод преобразует стандартизированное доменное имя обратно в исходное доменное имя, но заменяет исходные разделители меток стандартным разделителем меток.
// 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).
'
Комментарии
Параметры Unicode
, index
и count
определяют подстроку с одной или несколькими метками, состоящими из допустимых символов Юникода. Метки разделяются разделителями меток. Первый символ подстроки не может начинаться с разделителя меток, но может включать и при необходимости заканчиваться разделителем. Разделители меток: FULL STOP (точка, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E) и HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Например, доменное имя "www.adatum.com" состоит из меток "www", "adatum" и "com", разделенных точками.
Метка не может содержать следующие символы:
Управляющие символы Юникода от U+0001 до U+001F и U+007F.
Неназначенные символы Юникода в зависимости от значения AllowUnassigned свойства.
Нестандартные символы в диапазоне символов US-ASCII, такие как ПРОБЕЛ (U+0020), ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК (U+0021) и СИМВОЛЫ LOW LINE (U+005F), в зависимости от значения UseStd3AsciiRules свойства.
Символы, запрещенные определенной версией стандарта IDNA. Дополнительные сведения о запрещенных символах см. в разделах RFC 3454: Подготовка международных строк ("stringprep") для IDNA 2003 и RFC 5982: Кодовые точки Юникода и международные доменные имена для приложений для IDNA 2008.
Метод GetAscii преобразует все разделители меток в FULL STOP (точка, U+002E). Если подстрока не содержит символов за пределами диапазона символов US-ASCII и символы в диапазоне символов US-ASCII не запрещены, метод возвращает подстроку без изменений.
Примечания для тех, кто вызывает этот метод
В платформа .NET Framework 4.5 IdnMapping класс поддерживает различные версии стандарта IDNA в зависимости от используемой операционной системы:
При запуске на Windows 8 она поддерживает версию 2008 года стандарта IDNA, описанную rfc 5891: internationalized domain names in Applications (IDNA): Protocol.
При запуске в более ранних версиях операционной системы Windows она поддерживает стандарт 2003, описанный в документе RFC 3490: интернационализация доменных имен в приложениях (IDNA).
Различия в том, как эти стандарты обрабатывают определенные наборы символов, см. в разделе Технический стандарт Юникода No 46: обработка совместимости IDNA .