IdnMapping.GetAscii Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengodekan string label nama domain yang menyertakan karakter Unicode di luar rentang karakter US-ASCII ke string karakter Unicode yang dapat ditampilkan dalam rentang karakter AS-ASCII (U+0020 hingga U+007E). String diformat sesuai dengan standar IDNA.
Overload
GetAscii(String) |
Mengodekan string label nama domain yang terdiri dari karakter Unicode ke string karakter Unicode yang dapat ditampilkan dalam rentang karakter US-ASCII. String diformat sesuai dengan standar IDNA. |
GetAscii(String, Int32) |
Mengodekan substring label nama domain yang menyertakan karakter Unicode di luar rentang karakter US-ASCII. Substring dikonversi ke string karakter Unicode yang dapat ditampilkan dalam rentang karakter US-ASCII dan diformat sesuai dengan standar IDNA. |
GetAscii(String, Int32, Int32) |
Mengodekan jumlah karakter yang ditentukan dalam substring label nama domain yang menyertakan karakter Unicode di luar rentang karakter US-ASCII. Substring dikonversi ke string karakter Unicode yang dapat ditampilkan dalam rentang karakter US-ASCII dan diformat sesuai dengan standar IDNA. |
GetAscii(String)
- Sumber:
- IdnMapping.cs
- Sumber:
- IdnMapping.cs
- Sumber:
- IdnMapping.cs
Mengodekan string label nama domain yang terdiri dari karakter Unicode ke string karakter Unicode yang dapat ditampilkan dalam rentang karakter US-ASCII. String diformat sesuai dengan standar 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
Parameter
- unicode
- String
String yang akan dikonversi, yang terdiri dari satu atau beberapa label nama domain yang dibatasi dengan pemisah label.
Mengembalikan
Setara dengan string yang ditentukan oleh unicode
parameter , terdiri dari karakter Unicode yang dapat ditampilkan dalam rentang karakter US-ASCII (U+0020 hingga U+007E) dan diformat sesuai dengan standar IDNA.
Pengecualian
unicode
adalah null
.
unicode
tidak valid berdasarkan AllowUnassigned properti dan UseStd3AsciiRules , dan standar IDNA.
Contoh
Contoh berikut menggunakan GetAscii(String) metode untuk mengonversi array nama domain internasional ke Punycode, yang merupakan setara yang dikodekan yang terdiri dari karakter dalam rentang karakter US-ASCII. Metode ini GetUnicode(String) kemudian mengonversi nama domain Punycode kembali ke nama domain asli, tetapi mengganti pemisah label asli dengan pemisah label standar.
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
Keterangan
Parameter unicode
menentukan string satu atau beberapa label yang terdiri dari karakter Unicode yang valid. Label dipisahkan oleh pemisah label. Parameter unicode
tidak dapat dimulai dengan pemisah label, tetapi dapat menyertakan dan secara opsional diakhawati dengan pemisah. Pemisah label adalah FULL STOP (periode, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E), dan HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Misalnya, nama domain "www.adatum.com" terdiri dari label, "www", "adatum", dan "com", dipisahkan oleh titik.
Label tidak boleh berisi salah satu karakter berikut:
Karakter kontrol Unicode dari U+0001 hingga U+001F, dan U+007F.
Karakter Unicode yang tidak ditetapkan, jika nilai AllowUnassigned properti adalah
false
.Karakter non-standar dalam rentang karakter US-ASCII, seperti karakter SPACE (U+0020), EXCLAMATION MARK (U+0021), dan LOW LINE (U+005F), jika nilai UseStd3AsciiRules properti adalah
true
.Karakter yang dilarang oleh versi tertentu dari standar IDNA. Untuk informasi selengkapnya tentang karakter yang dilarang, lihat RFC 3454: Persiapan String Internasional ("stringprep") untuk IDNA 2003, dan RFC 5982: Poin Kode Unicode dan Nama Domain Internasional untuk Aplikasi untuk IDNA 2008.
Metode ini GetAscii mengonversi semua pemisah label ke FULL STOP (periode, U+002E).
Jika unicode
tidak berisi karakter di luar rentang karakter US-ASCII dan tidak ada karakter dalam rentang karakter US-ASCII yang dilarang, metode mengembalikan unicode
tidak berubah.
Catatan Bagi Pemanggil
Dalam .NET Framework 4.5, IdnMapping kelas mendukung berbagai versi standar IDNA, tergantung pada sistem operasi yang digunakan:
Ketika dijalankan pada Windows 8, ia mendukung versi 2008 dari standar IDNA yang diuraikan oleh RFC 5891: Nama Domain Internasional dalam Aplikasi (IDNA): Protokol.
Ketika dijalankan pada versi sistem operasi Windows yang lebih lama, sistem ini mendukung versi 2003 dari standar yang diuraikan oleh RFC 3490: Mensalurkan Nama Domain dalam Aplikasi (IDNA).
Lihat Standar Teknis Unicode #46: Pemrosesan Kompatibilitas IDNA untuk perbedaan cara standar ini menangani kumpulan karakter tertentu.
Berlaku untuk
GetAscii(String, Int32)
- Sumber:
- IdnMapping.cs
- Sumber:
- IdnMapping.cs
- Sumber:
- IdnMapping.cs
Mengodekan substring label nama domain yang menyertakan karakter Unicode di luar rentang karakter US-ASCII. Substring dikonversi ke string karakter Unicode yang dapat ditampilkan dalam rentang karakter US-ASCII dan diformat sesuai dengan standar 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
Parameter
- unicode
- String
String yang akan dikonversi, yang terdiri dari satu atau beberapa label nama domain yang dibatasi dengan pemisah label.
- index
- Int32
Offset berbasis nol ke dalam unicode
yang menentukan awal substring yang akan dikonversi. Operasi konversi berlanjut ke akhir unicode
string.
Mengembalikan
Setara dengan substring yang ditentukan oleh unicode
parameter dan index
, terdiri dari karakter Unicode yang dapat ditampilkan dalam rentang karakter AS-ASCII (U+0020 hingga U+007E) dan diformat sesuai dengan standar IDNA.
Pengecualian
unicode
adalah null
.
unicode
tidak valid berdasarkan AllowUnassigned properti dan UseStd3AsciiRules , dan standar IDNA.
Keterangan
Parameter unicode
dan index
menentukan substring dengan satu atau beberapa label yang terdiri dari karakter Unicode yang valid. Label dipisahkan oleh pemisah label. Karakter pertama substring tidak dapat dimulai dengan pemisah label, tetapi dapat menyertakan dan secara opsional diakhawati dengan pemisah. Pemisah label adalah FULL STOP (periode, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E), dan HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Misalnya, nama domain "www.adatum.com" terdiri dari label, "www", "adatum", dan "com", dipisahkan oleh titik.
Label tidak boleh berisi salah satu karakter berikut:
Karakter kontrol Unicode dari U+0001 hingga U+001F, dan U+007F.
Karakter Unicode yang tidak ditetapkan, tergantung pada nilai AllowUnassigned properti .
Karakter non-standar dalam rentang karakter US-ASCII, seperti karakter SPACE (U+0020), TANDA SERU (U+0021), dan LOW LINE (U+005F), tergantung pada nilai UseStd3AsciiRules properti.
Karakter yang dilarang oleh versi tertentu dari standar IDNA. Untuk informasi selengkapnya tentang karakter yang dilarang, lihat RFC 3454: Persiapan String Internasional ("stringprep") untuk IDNA 2003, dan RFC 5982: Poin Kode Unicode dan Nama Domain Internasional untuk Aplikasi untuk IDNA 2008.
Metode ini GetAscii mengonversi semua pemisah label ke FULL STOP (periode, U+002E).
Jika unicode
tidak berisi karakter di luar rentang karakter US-ASCII dan tidak ada karakter dalam rentang karakter US-ASCII yang dilarang, metode mengembalikan unicode
tidak berubah.
Catatan Bagi Pemanggil
Dalam .NET Framework 4.5, IdnMapping kelas mendukung berbagai versi standar IDNA, tergantung pada sistem operasi yang digunakan:
Ketika dijalankan pada Windows 8, ia mendukung versi 2008 dari standar IDNA yang diuraikan oleh RFC 5891: Nama Domain Internasional dalam Aplikasi (IDNA): Protokol.
Ketika dijalankan pada versi sistem operasi Windows yang lebih lama, sistem ini mendukung versi 2003 dari standar yang diuraikan oleh RFC 3490: Mensalurkan Nama Domain dalam Aplikasi (IDNA).
Lihat Standar Teknis Unicode #46: Pemrosesan Kompatibilitas IDNA untuk perbedaan cara standar ini menangani kumpulan karakter tertentu.
Berlaku untuk
GetAscii(String, Int32, Int32)
- Sumber:
- IdnMapping.cs
- Sumber:
- IdnMapping.cs
- Sumber:
- IdnMapping.cs
Mengodekan jumlah karakter yang ditentukan dalam substring label nama domain yang menyertakan karakter Unicode di luar rentang karakter US-ASCII. Substring dikonversi ke string karakter Unicode yang dapat ditampilkan dalam rentang karakter US-ASCII dan diformat sesuai dengan standar 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
Parameter
- unicode
- String
String yang akan dikonversi, yang terdiri dari satu atau beberapa label nama domain yang dibatasi dengan pemisah label.
- index
- Int32
Offset berbasis nol ke dalam unicode
yang menentukan awal substring.
- count
- Int32
Jumlah karakter yang akan dikonversi dalam substring yang dimulai pada posisi yang ditentukan oleh index
dalam unicode
string.
Mengembalikan
Setara dengan substring yang ditentukan oleh unicode
parameter , , index
dan count
, yang terdiri dari karakter Unicode yang dapat ditampilkan dalam rentang karakter AS-ASCII (U+0020 hingga U+007E) dan diformat sesuai dengan standar IDNA.
Pengecualian
unicode
adalah null
.
index
atau count
kurang dari nol.
-atau-
index
lebih besar dari panjang unicode
.
-atau-
index
lebih besar dari panjang unicode
minus count
.
unicode
tidak valid berdasarkan AllowUnassigned properti dan UseStd3AsciiRules , dan standar IDNA.
Contoh
Contoh berikut menggunakan GetAscii(String, Int32, Int32) metode untuk mengonversi nama domain internasional menjadi nama domain yang sesuai dengan standar IDNA. Metode ini GetUnicode(String, Int32, Int32) kemudian mengonversi nama domain standar kembali ke nama domain asli, tetapi mengganti pemisah label asli dengan pemisah label standar.
// 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).
'
Keterangan
Parameter Unicode
, index
, dan count
menentukan substring dengan satu atau beberapa label yang terdiri dari karakter Unicode yang valid. Label dipisahkan oleh pemisah label. Karakter pertama substring tidak dapat dimulai dengan pemisah label, tetapi dapat menyertakan dan secara opsional diakhawati dengan pemisah. Pemisah label adalah FULL STOP (periode, U+002E), IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E), dan HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61). Misalnya, nama domain "www.adatum.com" terdiri dari label, "www", "adatum", dan "com", dipisahkan oleh titik.
Label tidak boleh berisi salah satu karakter berikut:
Karakter kontrol Unicode dari U+0001 hingga U+001F, dan U+007F.
Karakter Unicode yang tidak ditetapkan, tergantung pada nilai AllowUnassigned properti .
Karakter non-standar dalam rentang karakter US-ASCII, seperti karakter SPACE (U+0020), TANDA SERU (U+0021), dan LOW LINE (U+005F), tergantung pada nilai UseStd3AsciiRules properti.
Karakter yang dilarang oleh versi tertentu dari standar IDNA. Untuk informasi selengkapnya tentang karakter yang dilarang, lihat RFC 3454: Persiapan String Internasional ("stringprep") untuk IDNA 2003, dan RFC 5982: Poin Kode Unicode dan Nama Domain Internasional untuk Aplikasi untuk IDNA 2008.
Metode ini GetAscii mengonversi semua pemisah label ke FULL STOP (periode, U+002E). Jika substring tidak berisi karakter di luar rentang karakter US-ASCII, dan tidak ada karakter dalam rentang karakter US-ASCII yang dilarang, metode mengembalikan substring yang tidak berubah.
Catatan Bagi Pemanggil
Dalam .NET Framework 4.5, IdnMapping kelas mendukung berbagai versi standar IDNA, tergantung pada sistem operasi yang digunakan:
Ketika dijalankan pada Windows 8, ia mendukung versi 2008 dari standar IDNA yang diuraikan oleh RFC 5891: Nama Domain Internasional dalam Aplikasi (IDNA): Protokol.
Ketika dijalankan pada versi sistem operasi Windows yang lebih lama, sistem ini mendukung versi 2003 dari standar yang diuraikan oleh RFC 3490: Mensalurkan Nama Domain dalam Aplikasi (IDNA).
Lihat Standar Teknis Unicode #46: Pemrosesan Kompatibilitas IDNA untuk perbedaan cara standar ini menangani kumpulan karakter tertentu.