Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe IdnMapping

 

Supporta l'utilizzo di caratteri non ASCII per i nomi di dominio Internet.   Questa classe non può essere ereditata.   

Spazio dei nomi:   System.Globalization
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.Globalization.IdnMapping

public sealed class IdnMapping

NomeDescrizione
System_CAPS_pubmethodIdnMapping()

Inizializza una nuova istanza della classe IdnMapping.

NomeDescrizione
System_CAPS_pubpropertyAllowUnassigned

Ottiene o imposta un valore che indica se punti di codice Unicode non assegnati vengono utilizzati nelle operazioni eseguite da membri dell'oggetto IdnMapping corrente.

System_CAPS_pubpropertyUseStd3AsciiRules

Ottiene o imposta un valore che indica se convenzioni di denominazione standard o relaxed vengono utilizzate nelle operazioni eseguite da membri dell'oggetto IdnMapping corrente.

NomeDescrizione
System_CAPS_pubmethodEquals(Object)

Indica se l'oggetto specificato e l'oggetto IdnMapping sono uguali.(Esegue l’override di Object.Equals(Object)).

System_CAPS_pubmethodGetAscii(String)

Codifica una stringa di etichette del nome di dominio costituite da caratteri Unicode in una stringa di caratteri Unicode visualizzabili compresi nell'intervallo di caratteri US-ASCII.La stringa viene formattata in base allo standard IDNA.

System_CAPS_pubmethodGetAscii(String, Int32)

Codifica una sottostringa di etichette di nome di dominio che include caratteri Unicode non compresi nell'intervallo di caratteri US-ASCII.La sottostringa viene convertita in una stringa di caratteri Unicode visualizzabili nell'intervallo di caratteri US-ASCII e formattata in base allo standard IDNA.

System_CAPS_pubmethodGetAscii(String, Int32, Int32)

Codifica il numero di caratteri specificato in una sottostringa di etichette di nome di dominio che include caratteri Unicode non compresi nell'intervallo di caratteri US-ASCII.La sottostringa viene convertita in una stringa di caratteri Unicode visualizzabili nell'intervallo di caratteri US-ASCII e formattata in base allo standard IDNA.

System_CAPS_pubmethodGetHashCode()

Restituisce codice hash per l'oggetto IdnMapping.(Esegue l’override di Object.GetHashCode()).

System_CAPS_pubmethodGetType()

Ottiene il Type dell'istanza corrente. (Ereditato da Object.)

System_CAPS_pubmethodGetUnicode(String)

Decodifica una stringa di una o più etichette del nome di dominio codificate in base allo standard IDNA in una stringa di caratteri Unicode.

System_CAPS_pubmethodGetUnicode(String, Int32)

Decodifica una sottostringa di una o più etichette del nome di dominio codificate in base allo standard IDNA in una stringa di caratteri Unicode.

System_CAPS_pubmethodGetUnicode(String, Int32, Int32)

Decodifica una sottostringa di una lunghezza specificata contenente una o più etichette del nome di dominio codificate in base allo standard IDNA in una stringa di caratteri Unicode.

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object.)

Un nome di dominio Internet è costituito da una o più parti, denominate etichette del nome di dominio, delimitate da separatori di etichetta.  Ad esempio, il nome di dominio "www.proseware.com" è costituito dalle etichette "www", "proseware" e "com" separate da punti.  I nomi di dominio standard sono costituiti da caratteri designati nell'intervallo di caratteri US-ASCII (o Latino di base), da U+0021 a U+007E.  Per facilitare l'utilizzo di Internet nelle impostazioni culturali che non utilizzano il set di caratteri US-ASCII, è stato adottato nel 2003 i Nomi di dominio di internazionalizzazione in standard di applicazioni (IDNA) per supportare l'inclusione dei caratteri Unicode non compresi nell'intervallo di caratteri US-ASCII.  Tuttavia, la risoluzione dei nomi dei server e dei nomi di dominio continua ad utilizzare caratteri contenuti nell'intervallo di caratteri US-ASCII.  

Il meccanismo IDNA utilizza Punycode per associare i nomi di dominio internazionali, che contengono caratteri Unicode non compresi nell'intervallo di caratteri US-ASCII, all'intervallo di caratteri US-ASCII supportato dai Domain Name System.  Il meccanismo IDNA viene utilizzato solo per la conversione dei nomi di dominio, non dei dati trasmessi in Internet.  

System_CAPS_importantImportante

In .NET Framework 4.5, la classe IdnMapping supporta diverse versioni standard di IDNA, a seconda del sistema operativo in uso:

Vedere Regola tecnica Unicode #46: Elaborazione di compatibilità IDNA per le differenze nel modo in cui questi standard gestiscono particolari set di caratteri.

Il metodo IdnMapping.GetAscii normalizza un nome di dominio, converte il nome normalizzato in una rappresentazione costituita da caratteri Unicode compresi nell'intervallo dei punti di codice US-ASCII (da U+0020 a U+007E) e antepone un prefisso ("xn--") ASCII-compatibile codificato (ACE) per ciascuna etichetta.  Il metodo IdnMapping.GetUnicode ripristina le etichette del nome di dominio convertite dal metodo GetAscii.  

Se la stringa da convertire include caratteri separatori di etichetta, IDEOGRAPHIC FULL STOP (U+3002), FULLWIDTH FULL STOP (U+FF0E), e HALFWIDTH IDEOGRAPHIC FULL STOP (U+FF61), il metodo GetAscii le converte in separatori di etichetta FULL STOP (period, U+002E).  Il metodo GetUnicode, tuttavia, non ripristina il carattere separatore originale dell'etichetta.  

Nell'esempio seguente viene utilizzato il metodo GetAscii(String, Int32, Int32) per convertire un vettore di nomi di dominio internazionalizzati in Punycode.  Il metodo GetUnicode converte quindi di nuovo il nome di dominio Punycode nel nome di dominio originale, sostituendo i separatori di etichetta originali con il separatore di etichetta standard.  

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 += String.Format("U+{0} ", Convert.ToUInt16(ch).ToString("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

Universal Windows Platform
Disponibile da 10
.NET Framework
Disponibile da 2.0

Eventuali membri pubblici statici (Shared in Visual Basic) di questo tipo sono thread-safe. I membri di istanza non sono garantiti come thread-safe.

Torna all'inizio
Mostra: