Função IdnToUnicode (winnls.h)

Converte o formulário Punycode de um IDN (nome de domínio internacionalizado) ou outro rótulo internacionalizado para a sintaxe de codificação UTF-16 unicode normal.

Cuidado Essa função implementa os algoritmos padrão RFC 3490: Internationalizing Domain Names in Applications (IDNA) para a codificação Punycode de Unicode. O padrão apresenta alguns problemas de segurança. Um problema é que os glifos que representam determinados caracteres de scripts diferentes podem parecer semelhantes ou até mesmo idênticos. Por exemplo, em muitas fontes, a letra minúscula cirílico A ("а") é indistinguível do latino minúsculo A ("a"). Não há como dizer visualmente que "example.com" e "exа mple.com" são dois nomes de domínio diferentes, um com uma letra minúscula latina A no nome, o outro com uma letra minúscula cirílico A. Para obter mais informações sobre questões de segurança relacionadas ao IDN, consulte Manipulando IDNs (nomes de domínio internacionalizados).

 

Sintaxe

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

Parâmetros

[in] dwFlags

Sinalizadores especificando opções de conversão. Para obter definições detalhadas, consulte o parâmetro dwFlags de IdnToAscii.

[in] lpASCIICharStr

Ponteiro para uma cadeia de caracteres que representa a codificação punycode de um IDN ou outro rótulo internacionalizado. Essa cadeia de caracteres deve consistir apenas em caracteres ASCII e pode incluir Unicode codificado em Punycode. A função decodifica valores punycode para seus valores UTF-16.

[in] cchASCIIChar

Contagem de caracteres na cadeia de caracteres de entrada indicada por lpASCIICharStr.

[out, optional] lpUnicodeCharStr

Ponteiro para um buffer que recebe uma codificação UTF-16 unicode normal equivalente ao valor punycode da cadeia de caracteres de entrada. Como alternativa, a função poderá recuperar NULL para esse parâmetro, se cchUnicodeChar definir como 0. Nesse caso, a função retorna o tamanho necessário para esse buffer.

[in] cchUnicodeChar

Tamanho, em caracteres, do buffer indicado por lpUnicodeCharStr. O aplicativo pode definir o tamanho como 0 para recuperar NULL em lpUnicodeCharStr e fazer com que a função retorne o tamanho do buffer necessário.

Retornar valor

Retorna o número de caracteres recuperados em lpUnicodeCharStr se tiver êxito. A cadeia de caracteres recuperada será terminada em nulo somente se a cadeia de caracteres de entrada for terminada em nulo.

Se a função for bem-sucedida e o valor de cchUnicodeChar for 0, a função retornará o tamanho necessário, em caracteres incluindo um caractere nulo de terminação se ele fizer parte do buffer de entrada.

A função retornará 0 se não for bem-sucedida. Para obter informações de erro estendidas, o aplicativo pode chamar GetLastError, que pode retornar um dos seguintes códigos de erro:

  • ERROR_INSUFFICIENT_BUFFER. Um tamanho de buffer fornecido não era grande o suficiente ou foi definido incorretamente como NULL.
  • ERROR_INVALID_FLAGS. Os valores fornecidos para sinalizadores não eram válidos.
  • ERROR_INVALID_NAME. Um nome inválido foi fornecido à função . Observe que esse código de erro captura todos os erros de sintaxe.
  • ERROR_INVALID_PARAMETER. Qualquer um dos valores de parâmetro era inválido.
  • ERROR_NO_UNICODE_TRANSLATION. Unicode inválido foi encontrado em uma cadeia de caracteres.

Comentários

Consulte Comentários para IdnToAscii.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho winnls.h (inclua Windows.h)
Biblioteca Normaliz.lib
DLL Normaliz.dll
Redistribuível APIs de mitigação do IDN (Nome de Domínio Internacionalizado) da Microsoft noWindows XP com SP2 e posterior, ouWindows Server 2003 com SP1

Confira também

Tratamento de IDNs (nomes de domínio internacionalizados)

IdnToAscii

IdnToNameprepUnicode

Suporte à linguagem nacional

Funções de suporte à linguagem nacional