IdnMapping.GetAscii 方法   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将包含 US-ASCII 字符范围以外的Unicode字符的域名称标签字符串编码为(U+0020 至 U+007E)内的可显示 Unicode 字符的字符串。 根据 IDNA 标准格式化的字符串。
重载
| GetAscii(String) | 将由 Unicode 字符组成的域名标签的字符串编码为 US-ASCII 字符范围内的可显示的 Unicode 字符的字符串。 根据 IDNA 标准格式化的字符串。 | 
| GetAscii(String, Int32) | 编码包含US-ASCII字符范围以外的 Unicode 字符的域名称标签子字符串。 子串转换为在 US-ASCII 字符范围内可显示的“ Unicode ”字符串并根据 IDNA 标准格式化。 | 
| GetAscii(String, Int32, Int32) | 在包含 US-ASCII 字符范围之外的 Unicode 字符的域名标签子字符串中对指定数量的字符进行编码。 子串转换为在 US-ASCII 字符范围内可显示的“ Unicode ”字符串并根据 IDNA 标准格式化。 | 
GetAscii(String)
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
将由 Unicode 字符组成的域名标签的字符串编码为 US-ASCII 字符范围内的可显示的 Unicode 字符的字符串。 根据 IDNA 标准格式化的字符串。
public:
 System::String ^ GetAscii(System::String ^ unicode);public string GetAscii (string unicode);member this.GetAscii : string -> stringPublic Function GetAscii (unicode As String) As String参数
- unicode
- String
要转换的字符串,它包含一个或多个由标签分隔符分隔的域名标签。
返回
由 unicode 参数指定的字符串的等效项包括 US-ASCII 字符范围(U+0020 至 U+007E)内的可显示 Unicode 字符并根据 IDNA 标准格式化。
例外
              unicode 为 null。
根据 AllowUnassigned 和 UseStd3AsciiRules 属性以及 IDNA 标准,unicode 是无效的。
示例
以下示例使用 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 字符组成。 标签由标签分隔符分隔。 参数 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”组成,用句点分隔。
标签不能包含以下任何字符:
- Unicode 控制从 U+0001 到 U+001F 和 U+007F 的字符。 
- 如果 属性 - false的值为 ,则为未分配的 AllowUnassigned Unicode 字符。
- US-ASCII 字符范围中的非标准字符,例如 SPACE (U+0020) 、感叹号 (U+0021) 和 LOW LINE (U+005F) 字符(如果 属性 - true的UseStd3AsciiRules值为 )。
- 特定版本的 IDNA 标准禁止的字符。 有关禁止字符的详细信息,请参阅 RFC 3454:为 IDNA 2003 准备国际化字符串 (“stringprep”) 和 RFC 5982:IDNA 2008 应用程序的 Unicode 码点和国际化域名 。 
方法 GetAscii 将所有标签分隔符转换为 FULL STOP (期间 U+002E) 。
如果 unicode 不包含 US-ASCII 字符范围之外的字符,并且禁止 US-ASCII 字符范围内的任何字符,该方法将 unicode 返回不变。
调用方说明
在 .NET Framework 4.5 中IdnMapping,类支持不同版本的 IDNA 标准,具体取决于使用的操作系统:
- 在 Windows 8 运行时,它支持 RFC 5891 概述的 2008 版 IDNA 标准:应用程序中的国际化域名 (IDNA) :协议。 
- 在早期版本的 Windows 操作系统上运行时,它支持 RFC 3490 概述的 2003 版标准:将应用程序中的域名国际化 (IDNA) 。 
有关这些标准处理特定字符集的方式的差异,请参阅 Unicode 技术标准 #46:IDNA 兼容性处理 。
适用于
GetAscii(String, Int32)
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
编码包含US-ASCII字符范围以外的 Unicode 字符的域名称标签子字符串。 子串转换为在 US-ASCII 字符范围内可显示的“ Unicode ”字符串并根据 IDNA 标准格式化。
public:
 System::String ^ GetAscii(System::String ^ unicode, int index);public string GetAscii (string unicode, int index);member this.GetAscii : string * int -> stringPublic Function GetAscii (unicode As String, index As Integer) As String参数
- unicode
- String
要转换的字符串,它包含一个或多个由标签分隔符分隔的域名标签。
- index
- Int32
              unicode 的从零开始的偏移量,用于指定开始转换的子字符串的位置。 转换运算将继续执行到 unicode 字符串的末尾。
返回
由 unicode 和 index 指定的子字符串的等效项包括 US-ASCII 字符范围(U+0020 至 U+007E)内的可显示 Unicode 字符并根据 IDNA 标准格式化。
例外
              unicode 为 null。
根据 AllowUnassigned 和 UseStd3AsciiRules 属性以及 IDNA 标准,unicode 是无效的。
注解
              unicode和 index 参数定义包含一个或多个标签的子字符串,这些标签由有效的 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”组成,用句点分隔。
标签不能包含以下任何字符:
- Unicode 控制从 U+0001 到 U+001F 和 U+007F 的字符。 
- 未分配的 Unicode 字符,具体取决于 属性的值 AllowUnassigned 。 
- US-ASCII 字符范围中的非标准字符,例如 SPACE (U+0020) 、感叹号 (U+0021) 和 LOW LINE (U+005F) 字符,具体取决于属性的值 UseStd3AsciiRules 。 
- 特定版本的 IDNA 标准禁止的字符。 有关禁止字符的详细信息,请参阅 RFC 3454:为 IDNA 2003 准备国际化字符串 (“stringprep”) 和 RFC 5982:IDNA 2008 应用程序的 Unicode 码点和国际化域名 。 
方法 GetAscii 将所有标签分隔符转换为 FULL STOP (期间 U+002E) 。
如果 unicode 不包含 US-ASCII 字符范围之外的字符,并且禁止 US-ASCII 字符范围内的任何字符,该方法将 unicode 返回不变。
调用方说明
在 .NET Framework 4.5 中IdnMapping,类支持不同版本的 IDNA 标准,具体取决于使用的操作系统:
- 在 Windows 8 运行时,它支持 RFC 5891 概述的 2008 版 IDNA 标准:应用程序中的国际化域名 (IDNA) :协议。 
- 在早期版本的 Windows 操作系统上运行时,它支持 RFC 3490 概述的 2003 版标准:将应用程序中的域名国际化 (IDNA) 。 
有关这些标准处理特定字符集的方式的差异,请参阅 Unicode 技术标准 #46:IDNA 兼容性处理 。
适用于
GetAscii(String, Int32, Int32)
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
- Source:
- IdnMapping.cs
在包含 US-ASCII 字符范围之外的 Unicode 字符的域名标签子字符串中对指定数量的字符进行编码。 子串转换为在 US-ASCII 字符范围内可显示的“ Unicode ”字符串并根据 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 -> stringPublic Function GetAscii (unicode As String, index As Integer, count As Integer) As String参数
- unicode
- String
要转换的字符串,它包含一个或多个由标签分隔符分隔的域名标签。
- index
- Int32
              unicode 的从零开始的偏移量,用于指定子字符串的起始位置。
- count
- Int32
要在 unicode 字符串中的 index 指定的位置开始的子字符串中转换的字符数。
返回
由 unicode、index 和 count 参数指定的子字符串的等效项,包括 US-ASCII 字符范围(U+0020 至 U+007E)内的可显示 Unicode 字符并根据 IDNA 标准格式化。
例外
              unicode 为 null。
              index 或 count 小于零。
或
              index 大于 unicode 的长度。
或
              index 大于 unicode 的长度减去 count。
根据 AllowUnassigned 和 UseStd3AsciiRules 属性以及 IDNA 标准,unicode 是无效的。
示例
以下示例使用 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 参数定义包含一个或多个标签的子字符串,这些标签由有效的 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”组成,用句点分隔。
标签不能包含以下任何字符:
- Unicode 控制从 U+0001 到 U+001F 和 U+007F 的字符。 
- 未分配的 Unicode 字符,具体取决于 属性的值 AllowUnassigned 。 
- US-ASCII 字符范围中的非标准字符,例如 SPACE (U+0020) 、感叹号 (U+0021) 和 LOW LINE (U+005F) 字符,具体取决于属性的值 UseStd3AsciiRules 。 
- 特定版本的 IDNA 标准禁止的字符。 有关禁止字符的详细信息,请参阅 RFC 3454:为 IDNA 2003 准备国际化字符串 (“stringprep”) 和 RFC 5982:IDNA 2008 应用程序的 Unicode 码点和国际化域名 。 
方法 GetAscii 将所有标签分隔符转换为 FULL STOP (期间 U+002E) 。 如果子字符串不包含 US-ASCII 字符范围之外的字符,并且禁止 US-ASCII 字符范围内的任何字符,则该方法返回未更改的子字符串。
调用方说明
在 .NET Framework 4.5 中IdnMapping,类支持不同版本的 IDNA 标准,具体取决于使用的操作系统:
- 在 Windows 8 运行时,它支持 RFC 5891 概述的 2008 版 IDNA 标准:应用程序中的国际化域名 (IDNA) :协议。 
- 在早期版本的 Windows 操作系统上运行时,它支持 RFC 3490 概述的 2003 版标准:将应用程序中的域名国际化 (IDNA) 。 
有关这些标准处理特定字符集的方式的差异,请参阅 Unicode 技术标准 #46:IDNA 兼容性处理 。