Share via


Funzione IdnToUnicode (winnls.h)

Converte la forma Punycode di un nome di dominio internazionalizzato (IDN) o un'altra etichetta internazionalizzata nella normale sintassi di codifica Unicode UTF-16.

Attenzione Questa funzione implementa gli algoritmi standard RFC 3490: Internazionalizzazione dei nomi di dominio nelle applicazioni (IDNA) per la codifica Punycode di Unicode. Lo standard introduce alcuni problemi di sicurezza. Un problema è che glifi che rappresentano determinati caratteri di script diversi potrebbero apparire simili o persino identici. Ad esempio, in molti tipi di carattere, la minuscola A ("а") è indistinguishable da lettere minuscole latine ("a"). Non c'è modo di indicare visivamente che "example.com" e "exа mple.com" sono due nomi di dominio diversi, uno con un maiuscolo latino nel nome, l'altro con una minuscola A cirillico. Per altre informazioni sui problemi di sicurezza correlati all'IDN, vedere Gestione dei nomi di dominio internazionalizzati (IDN).

 

Sintassi

int IdnToUnicode(
  [in]            DWORD   dwFlags,
  [in]            LPCWSTR lpASCIICharStr,
  [in]            int     cchASCIIChar,
  [out, optional] LPWSTR  lpUnicodeCharStr,
  [in]            int     cchUnicodeChar
);

Parametri

[in] dwFlags

Flag che specificano le opzioni di conversione. Per definizioni dettagliate, vedere il parametro dwFlags di IdnToAscii.

[in] lpASCIICharStr

Puntatore a una stringa che rappresenta la codifica Punycode di un IDN o di un'altra etichetta internazionalizzata. Questa stringa deve essere costituita solo da caratteri ASCII e può includere Unicode con codifica Punycode. La funzione decodifica i valori punycode nei valori UTF-16.

[in] cchASCIIChar

Numero di caratteri nella stringa di input indicata da lpASCIICharStr.

[out, optional] lpUnicodeCharStr

Puntatore a un buffer che riceve una normale codifica Unicode UTF-16 equivalente al valore Punycode della stringa di input. In alternativa, la funzione può recuperare NULL per questo parametro, se cchUnicodeChar impostato su 0. In questo caso, la funzione restituisce le dimensioni necessarie per questo buffer.

[in] cchUnicodeChar

Dimensioni, in caratteri, del buffer indicato da lpUnicodeCharStr. L'applicazione può impostare le dimensioni su 0 per recuperare NULL in lpUnicodeCharStr e restituire la dimensione del buffer necessaria.

Valore restituito

Restituisce il numero di caratteri recuperati in lpUnicodeCharStr se riuscito. La stringa recuperata viene terminata solo se la stringa di input è terminata con valore Null.

Se la funzione ha esito positivo e il valore di cchUnicodeChar è 0, la funzione restituisce le dimensioni necessarie, in caratteri inclusi un carattere Null terminante se fa parte del buffer di input.

La funzione restituisce 0 se non riesce. Per ottenere informazioni sull'errore estese, l'applicazione può chiamare GetLastError, che può restituire uno dei codici di errore seguenti:

  • ERROR_INSUFFICIENT_BUFFER. Una dimensione del buffer fornita non è stata sufficiente oppure è stata impostata in modo errato su NULL.
  • ERROR_INVALID_FLAGS. I valori forniti per i flag non sono validi.
  • ERROR_INVALID_NAME. È stato fornito un nome non valido alla funzione. Si noti che questo codice di errore rileva tutti gli errori di sintassi.
  • ERROR_INVALID_PARAMETER. Uno dei valori dei parametri non è valido.
  • ERROR_NO_UNICODE_TRANSLATION. Unicode non valido è stato trovato in una stringa.

Commenti

Vedere Osservazioni per IdnToAscii.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione winnls.h (includere Windows.h)
Libreria Normaliz.lib
DLL Normaliz.dll
Componente ridistribuibile API di mitigazione di Microsoft Internationalized Domain Name (IDN) inWindows XP con SP2 e versioni successive oWindows Server 2003 con SP1

Vedi anche

Gestione dei nomi di dominio internazionalizzati (IDN)

IdnToAscii

IdnToNameprepUnicode

Supporto per la lingua nazionale

Funzioni di supporto del linguaggio nazionale