Función IdnToUnicode (winnls.h)

Convierte la forma punycode de un nombre de dominio internacionalizado (IDN) u otra etiqueta internacionalizada en la sintaxis de codificación UTF-16 normal de Unicode .

Precaución Esta función implementa los algoritmos estándar RFC 3490: Internationalizing Domain Names in Applications (IDNA) para la codificación Punycode de Unicode. El estándar presenta algunos problemas de seguridad. Un problema es que los glifos que representan determinados caracteres de scripts diferentes pueden parecerse o incluso idénticos. Por ejemplo, en muchas fuentes, el A cirílico minúscula A ("а") es indistinguible del alfabeto latino A ("a"). No hay ninguna manera de indicar visualmente que "example.com" y "exа mple.com" son dos nombres de dominio diferentes, uno con un alfabeto latino A en minúsculas en el nombre, el otro con una letra minúscula cirílico A. Para obtener más información sobre los problemas de seguridad relacionados con IDN, consulte Control de nombres de dominio internacionalizados (IDN).

 

Sintaxis

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

Parámetros

[in] dwFlags

Marcas que especifican opciones de conversión. Para obtener definiciones detalladas, consulte el parámetro dwFlags de IdnToAscii.

[in] lpASCIICharStr

Puntero a una cadena que representa la codificación punycode de un IDN u otra etiqueta internacionalizada. Esta cadena solo debe constar de caracteres ASCII y puede incluir Unicode con codificación Punycode. La función descodifica los valores de Punycode en sus valores UTF-16.

[in] cchASCIIChar

Recuento de caracteres en la cadena de entrada indicada por lpASCIICharStr.

[out, optional] lpUnicodeCharStr

Puntero a un búfer que recibe una codificación Unicode UTF-16 normal equivalente al valor Punycode de la cadena de entrada. Como alternativa, la función puede recuperar NULL para este parámetro, si cchUnicodeChar se establece en 0. En este caso, la función devuelve el tamaño necesario para este búfer.

[in] cchUnicodeChar

Tamaño, en caracteres, del búfer indicado por lpUnicodeCharStr. La aplicación puede establecer el tamaño en 0 para recuperar NULL en lpUnicodeCharStr y hacer que la función devuelva el tamaño de búfer necesario.

Valor devuelto

Devuelve el número de caracteres recuperados en lpUnicodeCharStr si se ejecuta correctamente. La cadena recuperada solo termina en null si la cadena de entrada termina en null.

Si la función se ejecuta correctamente y el valor de cchUnicodeChar es 0, la función devuelve el tamaño necesario, en caracteres, incluido un carácter nulo de terminación si formaba parte del búfer de entrada.

La función devuelve 0 si no se realiza correctamente. Para obtener información de error extendida, la aplicación puede llamar a GetLastError, que puede devolver uno de los siguientes códigos de error:

  • ERROR_INSUFFICIENT_BUFFER. Un tamaño de búfer proporcionado no era lo suficientemente grande o se estableció incorrectamente en NULL.
  • ERROR_INVALID_FLAGS. Los valores proporcionados para las marcas no eran válidos.
  • ERROR_INVALID_NAME. Se proporcionó un nombre no válido a la función . Tenga en cuenta que este código de error detecta todos los errores de sintaxis.
  • ERROR_INVALID_PARAMETER. Cualquiera de los valores de parámetro no era válido.
  • ERROR_NO_UNICODE_TRANSLATION. Se encontró unicode no válido en una cadena.

Comentarios

Vea Comentarios para IdnToAscii.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado winnls.h (incluye Windows.h)
Library Normaliz.lib
Archivo DLL Normaliz.dll
Redistribuible API de mitigación de nombres de dominio internacionalizados (IDN) de Microsoft enWindows XP con SP2 y versiones posteriores, oWindows Server 2003 con SP1

Consulte también

Control de nombres de dominio internacionalizados (IDN)

IdnToAscii

IdnToNameprepUnicode

Compatibilidad con idiomas nacionales

Funciones de compatibilidad con idiomas nacionales