IdnMapping Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Támogatja a nem ASCII-karakterek használatát az internetes tartománynevekhez. Ez az osztály nem örökölhető.
public ref class IdnMapping sealed
public sealed class IdnMapping
type IdnMapping = class
Public NotInheritable Class IdnMapping
- Öröklődés
-
IdnMapping
Példák
Az alábbi példa a GetAscii(String, Int32, Int32) nemzetközi tartománynevek tömbjének Punycode-ra való konvertálására használható. A GetUnicode metódus ezután visszaállítja a Punycode tartománynevet az eredeti tartománynévre, de az eredeti címkeelválasztókat lecseréli a szabványos címkeelválasztóra.
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
Megjegyzések
Az internetes tartománynév egy vagy több részből, úgynevezett tartománynévfeliratokból áll, amelyeket címkeelválasztók választanak el egymástól. A "www.proseware.com" tartománynév például a "www", a "proseware" és a "com" címkékből áll, pontokkal elválasztva. A standard tartománynevek az US-ASCII (vagy egyszerű latin betűs) karaktertartományban kijelölt karakterekből állnak, U+0021 és U+007E között. A US-ASCII karakterkészletet nem használó kultúrák internethasználatának megkönnyítése érdekében 2003-ban elfogadták az Internationalizing Domain Names in Applications (IDNA) szabványt, amely támogatja a Unicode-karakterek US-ASCII karaktertartományon kívüli felvételét. A névkiszolgálók és a tartománynévfeloldás azonban továbbra is a US-ASCII karaktertartományon belüli karakterekre támaszkodik.
Az IDNA-mechanizmus a Punycode használatával képez le egy olyan nemzetközi tartománynevet, amely a US-ASCII karaktertartományon kívüli Unicode-karaktereket tartalmaz a tartománynévrendszer által támogatott US-ASCII karaktertartományra. Az IDNA-mechanizmus csak a tartománynevek konvertálására szolgál, az interneten keresztül továbbított adatokra nem.
Important
A .NET Framework 4.5-ben a IdnMapping osztály az IDNA szabvány különböző verzióit támogatja a használt operációs rendszertől függően:
- Ha Windows 8 fut, támogatja a RFC 5891: Internationalized Domain Names in Applications (IDNA): Protocol által felvázolt IDNA szabvány 2008-at.
- Ha az Windows operációs rendszer korábbi verzióin fut, támogatja a RFC 3490: Domain Names in Applications (IDNA) által felvázolt szabvány 2003-at.
Tekintse meg a Unicode Technical Standard #46: IDNA kompatibilitási feldolgozás című témakört, amely ismerteti, hogy a szabványok hogyan kezelik az adott karakterkészleteket.
A IdnMapping.GetAscii metódus normalizál egy tartománynevet, átalakítja a normalizált nevet egy olyan ábrázolássá, amely a US-ASCII kódponttartományban megjeleníthető Unicode-karakterekből áll (U+0020-ról U+007E-ra), és előszűr egy ASCII-kompatibilis kódolási (ACE) előtagot ("xn---") minden címkére. A IdnMapping.GetUnicode metódus visszaállítja a metódus által konvertált tartománynév-címkéket GetAscii .
Ha a konvertálni kívánt sztring tartalmazza az IDEOGRAPHIC FULL STOP (U+3002), a FULLWIDTH FULL STOP (U+FF0E) és a HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61) feliratelválasztó karaktereket, a GetAscii metódus teljes LEÁLLÍTÁS (pont, U+002E) címkeelválasztóvá alakítja őket. A GetUnicode metódus azonban nem állítja vissza az eredeti címkeelválasztó karaktert.
Konstruktorok
| Name | Description |
|---|---|
| IdnMapping() |
Inicializálja a IdnMapping osztály új példányát. |
Tulajdonságok
| Name | Description |
|---|---|
| AllowUnassigned |
Lekéri vagy beállítja azt az értéket, amely jelzi, hogy a rendszer nem hozzárendelt Unicode-kódpontokat használ-e az aktuális IdnMapping objektum tagjai által végrehajtott műveletekhez. |
| UseStd3AsciiRules |
Lekéri vagy beállít egy értéket, amely jelzi, hogy az aktuális IdnMapping objektum tagjai által végrehajtott műveletekben szabványos vagy nyugodt elnevezési konvenciók használhatók-e. |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Azt jelzi, hogy egy adott objektum és az aktuális IdnMapping objektum egyenlő-e. |
| GetAscii(String, Int32, Int32) |
A megadott számú karaktert kódolja a tartománynévcímkék olyan részsztringjeiben, amelyek unicode karaktereket tartalmaznak a US-ASCII karaktertartományon kívül. Az alsztring a US-ASCII karaktertartományban megjeleníthető Unicode-karakterekből álló sztringgé alakul, és az IDNA szabványnak megfelelően van formázva. |
| GetAscii(String, Int32) |
A tartománynévcímkék olyan alsztringjeinek kódolása, amelyek Unicode-karaktereket tartalmaznak a US-ASCII karaktertartományon kívül. Az alsztring a US-ASCII karaktertartományban megjeleníthető Unicode-karakterekből álló sztringgé alakul, és az IDNA szabványnak megfelelően van formázva. |
| GetAscii(String) |
Unicode-karakterekből álló tartománynév-sztringet kódol a US-ASCII karaktertartományban megjeleníthető Unicode-karakterekből álló sztringre. A sztring az IDNA szabvány szerint van formázva. |
| GetHashCode() |
Az objektum kivonatkódját IdnMapping adja vissza. |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| GetUnicode(String, Int32, Int32) |
Egy megadott hosszúságú alsztringet dekódol, amely egy vagy több, az IDNA szabványnak megfelelően kódolt tartománynévcímkét tartalmaz Unicode-karakterekből álló sztringre. |
| GetUnicode(String, Int32) |
Egy vagy több, az IDNA szabványnak megfelelően kódolt tartománynév-címke alsztringjének kódolása Unicode-karakterekből álló sztringre. |
| GetUnicode(String) |
Egy vagy több, az IDNA szabványnak megfelelően kódolt tartománynévcímkéket tartalmazó sztringet Unicode-karakterekből álló sztringre kódol. |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
| TryGetAscii(ReadOnlySpan<Char>, Span<Char>, Int32) |
Támogatja a nem ASCII-karakterek használatát az internetes tartománynevekhez. Ez az osztály nem örökölhető. |
| TryGetUnicode(ReadOnlySpan<Char>, Span<Char>, Int32) |
Támogatja a nem ASCII-karakterek használatát az internetes tartománynevekhez. Ez az osztály nem örökölhető. |
A következőre érvényes:
Szálbiztonság
Az összes nyilvános metódus IdnMapping szálbiztos, és egyidejűleg több szálból is használható, feltéve, hogy a IdnMapping példány tulajdonságai nem egyidejűleg vannak beállítva.