IdnMapping Kelas
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.
Mendukung penggunaan karakter non-ASCII untuk nama domain Internet. Kelas ini tidak dapat diwariskan.
public ref class IdnMapping sealed
public sealed class IdnMapping
type IdnMapping = class
Public NotInheritable Class IdnMapping
- Warisan
-
IdnMapping
Contoh
Contoh berikut menggunakan GetAscii(String, Int32, Int32) metode untuk mengonversi array nama domain internasional ke Punycode. Metode ini GetUnicode 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
Nama domain Internet terdiri dari satu atau beberapa bagian, yang disebut label nama domain, dipisahkan oleh pemisah label. Misalnya, nama domain "www.proseware.com" terdiri dari label, "www", "proseware", dan "com", dipisahkan oleh titik. Nama domain standar terdiri dari karakter yang ditunjuk dalam rentang karakter US-ASCII (atau Dasar Latin), dari U+0021 hingga U+007E. Untuk memfasilitasi penggunaan Internet dalam budaya yang tidak menggunakan kumpulan karakter US-ASCII, standar Internationalisasi Nama Domain dalam Aplikasi (IDNA) diadopsi pada tahun 2003 untuk mendukung penyertaan karakter Unicode di luar rentang karakter AS-ASCII. Namun, server nama dan resolusi nama domain terus mengandalkan karakter dalam rentang karakter US-ASCII.
Mekanisme IDNA menggunakan Punycode untuk memetakan nama domain internasional yang berisi karakter Unicode di luar rentang karakter US-ASCII ke rentang karakter US-ASCII yang didukung oleh sistem nama domain. Mekanisme IDNA digunakan untuk mengonversi hanya nama domain, bukan data yang dikirimkan melalui Internet.
Penting
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 operasi ini mendukung versi 2003 dari standar yang diuraikan oleh RFC 3490: Menasionalisasi Nama Domain dalam Aplikasi (IDNA).
Lihat Standar Teknis Unicode #46: Pemrosesan Kompatibilitas IDNA untuk perbedaan cara standar ini menangani set karakter tertentu.
Metode ini IdnMapping.GetAscii menormalkan nama domain, mengonversi nama yang dinormalisasi menjadi representasi yang terdiri dari karakter Unicode yang dapat ditampilkan dalam rentang titik kode AS-ASCII (U+0020 ke U+007E), dan menambahkan awalan pengodean yang kompatibel dengan ASCII (ACE) ("xn--") ke setiap label. Metode IdnMapping.GetUnicode memulihkan label nama domain yang dikonversi oleh GetAscii metode .
Jika string yang akan dikonversi menyertakan karakter pemisah label IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E), dan HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61), GetAscii metode mengonversinya ke pemisah label FULL STOP (periode, U+002E). Namun, metode ini GetUnicode tidak memulihkan karakter pemisah label asli.
Konstruktor
IdnMapping() |
Menginisialisasi instans baru kelas IdnMapping. |
Properti
AllowUnassigned |
Mendapatkan atau menetapkan nilai yang menunjukkan apakah titik kode Unicode yang tidak ditetapkan digunakan dalam operasi yang dilakukan oleh anggota objek saat ini IdnMapping . |
UseStd3AsciiRules |
Mendapatkan atau menetapkan nilai yang menunjukkan apakah konvensi penamaan standar atau santai digunakan dalam operasi yang dilakukan oleh anggota objek saat ini IdnMapping . |
Metode
Equals(Object) |
Menunjukkan apakah objek yang ditentukan dan objek saat ini IdnMapping sama. |
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 AS-ASCII. Substring dikonversi ke string karakter Unicode yang dapat ditampilkan dalam rentang karakter US-ASCII dan diformat sesuai dengan standar IDNA. |
GetHashCode() |
Mengembalikan kode hash untuk objek ini IdnMapping . |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
GetUnicode(String) |
Mendekode string satu atau beberapa label nama domain, dikodekan sesuai dengan standar IDNA, ke string karakter Unicode. |
GetUnicode(String, Int32) |
Mendekode substring dari satu atau beberapa label nama domain, yang dikodekan sesuai dengan standar IDNA, ke string karakter Unicode. |
GetUnicode(String, Int32, Int32) |
Mendekode substring dengan panjang tertentu yang berisi satu atau beberapa label nama domain, dikodekan sesuai dengan standar IDNA, ke string karakter Unicode. |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Berlaku untuk
Keamanan Thread
Semua metode publik aman untuk utas IdnMapping dan dapat digunakan secara bersamaan dari beberapa utas, selama IdnMapping properti instans tidak juga diatur secara bersamaan.