Fonction IdnToUnicode (winnls.h)

Convertit la forme Punycode d’un nom de domaine internationalisé (IDN) ou d’une autre étiquette internationalisée en syntaxe d’encodage Unicode UTF-16 normale.

Attention Cette fonction implémente les algorithmes standard RFC 3490 : Internationalizing Domain Names in Applications (IDNA) pour l’encodage Punycode d’Unicode. La norme introduit des problèmes de sécurité. Un problème est que les glyphes représentant certains caractères de différents scripts peuvent sembler similaires, voire identiques. Par exemple, dans de nombreuses polices, les minuscules cyrilliques A (« а ») ne sont pas reconnaissables du latin minuscule A (« a »). Il n’existe aucun moyen de dire visuellement que « example.com » et « exа mple.com » sont deux noms de domaine différents, l’un avec un minuscule latin A dans le nom, l’autre avec un minuscule cyrillique A. Pour plus d’informations sur les problèmes de sécurité liés à l’IDN, consultez Gestion des noms de domaine internationalisés (IDN).

 

Syntaxe

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

Paramètres

[in] dwFlags

Indicateurs spécifiant les options de conversion. Pour obtenir des définitions détaillées, consultez le paramètre dwFlags de IdnToAscii.

[in] lpASCIICharStr

Pointeur vers une chaîne représentant l’encodage Punycode d’un IDN ou d’une autre étiquette internationalisée. Cette chaîne doit se composer uniquement de caractères ASCII et peut inclure des caractères Unicode encodés en Punycode. La fonction décode les valeurs Punycode en valeurs UTF-16.

[in] cchASCIIChar

Nombre de caractères dans la chaîne d’entrée indiquée par lpASCIICharStr.

[out, optional] lpUnicodeCharStr

Pointeur vers une mémoire tampon qui reçoit un encodage Unicode UTF-16 normal équivalent à la valeur Punycode de la chaîne d’entrée. La fonction peut également récupérer null pour ce paramètre, si cchUnicodeChar a la valeur 0. Dans ce cas, la fonction retourne la taille requise pour cette mémoire tampon.

[in] cchUnicodeChar

Taille, en caractères, de la mémoire tampon indiquée par lpUnicodeCharStr. L’application peut définir la taille sur 0 pour récupérer NULL dans lpUnicodeCharStr et faire en effet que la fonction retourne la taille de mémoire tampon requise.

Valeur retournée

Retourne le nombre de caractères récupérés dans lpUnicodeCharStr en cas de réussite. La chaîne récupérée est terminée par null uniquement si la chaîne d’entrée est terminée par null.

Si la fonction réussit et que la valeur de cchUnicodeChar est 0, la fonction retourne la taille requise, en caractères incluant un caractère null de fin s’il faisait partie de la mémoire tampon d’entrée.

La fonction retourne 0 si elle ne réussit pas. Pour obtenir des informations d’erreur étendues, l’application peut appeler GetLastError, qui peut retourner l’un des codes d’erreur suivants :

  • ERROR_INSUFFICIENT_BUFFER. Une taille de mémoire tampon fournie n’était pas suffisamment grande ou a été incorrectement définie sur NULL.
  • ERROR_INVALID_FLAGS. Les valeurs fournies pour les indicateurs n’étaient pas valides.
  • ERROR_INVALID_NAME. Un nom non valide a été fourni à la fonction. Notez que ce code d’erreur intercepte toutes les erreurs de syntaxe.
  • ERROR_INVALID_PARAMETER. L’une des valeurs de paramètre n’était pas valide.
  • ERROR_NO_UNICODE_TRANSLATION. Unicode non valide a été trouvé dans une chaîne.

Remarques

Consultez les remarques relatives à IdnToAscii.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête winnls.h (inclure Windows.h)
Bibliothèque Normaliz.lib
DLL Normaliz.dll
Composant redistribuable API d’atténuation des noms de domaine internationalisés (IDN) Microsoft surWindows XP avec SP2 et versions ultérieures, ouWindows Server 2003 avec SP1

Voir aussi

Gestion des noms de domaine internationalisés (IDN)

IdnToAscii

IdnToNameprepUnicode

Prise en charge des langues nationales

Fonctions de prise en charge des langues nationales