Freigeben über


IdnToUnicode-Funktion (winnls.h)

Konvertiert die Punycode-Form eines internationalisierten Domänennamens (IDN) oder einer anderen internationalisierten Bezeichnung in die normale Unicode UTF-16-Codierungssyntax.

Vorsicht Diese Funktion implementiert die Standardalgorithmen RFC 3490: Internationalizing Domain Names in Applications (IDNA) für die Punycode-Codierung von Unicode. Der Standard führt zu einigen Sicherheitsproblemen. Ein Problem besteht darin, dass Glyphen, die bestimmte Zeichen aus verschiedenen Skripts darstellen, ähnlich oder sogar identisch aussehen können. Beispielsweise ist in vielen Schriftarten der kyrillische Kleinbuchstaben A ("а") nicht von lateinischem Kleinbuchstaben A ("a") zu unterscheiden. Es gibt keine Möglichkeit, visuell zu sagen, dass "example.com" und "exа mple.com" zwei verschiedene Domänennamen sind, einer mit einem lateinischen Kleinbuchstaben A im Namen, der andere mit einem kyrillischen Kleinbuchstaben A. Weitere Informationen zu IDN-bezogenen Sicherheitsbedenken finden Sie unter Handling Internationalized Domain Names (IDNs).

 

Syntax

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

Parameter

[in] dwFlags

Flags, die Konvertierungsoptionen angeben. Ausführliche Definitionen finden Sie im dwFlags-Parameter von IdnToAscii.

[in] lpASCIICharStr

Zeiger auf eine Zeichenfolge, die die Punycodecodierung eines IDN oder einer anderen internationalisierten Bezeichnung darstellt. Diese Zeichenfolge darf nur aus ASCII-Zeichen bestehen und kann Punycode-codiertes Unicode enthalten. Die Funktion decodiert Punycode-Werte in ihre UTF-16-Werte.

[in] cchASCIIChar

Anzahl der Zeichen in der eingabezeichenfolge angegeben durch lpASCIICharStr.

[out, optional] lpUnicodeCharStr

Zeiger auf einen Puffer, der eine normale Unicode UTF-16-Codierung empfängt, die dem Punycode-Wert der Eingabezeichenfolge entspricht. Alternativ kann die Funktion NULL für diesen Parameter abrufen, wenn cchUnicodeChar auf 0 festgelegt ist. In diesem Fall gibt die Funktion die für diesen Puffer erforderliche Größe zurück.

[in] cchUnicodeChar

Größe des Puffers, der durch lpUnicodeCharStr angegeben wird, in Zeichen. Die Anwendung kann die Größe auf 0 festlegen, um NULL in lpUnicodeCharStr abzurufen, und die Funktion gibt die erforderliche Puffergröße zurück.

Rückgabewert

Gibt bei erfolgreicher Ausführung die Anzahl der in lpUnicodeCharStr abgerufenen Zeichen zurück. Die abgerufene Zeichenfolge ist nur dann NULL-endend, wenn die Eingabezeichenfolge null-terminated ist.

Wenn die Funktion erfolgreich ist und der Wert von cchUnicodeChar 0 ist, gibt die Funktion die erforderliche Größe in Zeichen zurück, einschließlich eines abschließenden NULL-Zeichens, wenn sie Teil des Eingabepuffers war.

Die Funktion gibt 0 zurück, wenn sie nicht erfolgreich ist. Um erweiterte Fehlerinformationen zu erhalten, kann die Anwendung GetLastError aufrufen, wodurch einer der folgenden Fehlercodes zurückgegeben werden kann:

  • ERROR_INSUFFICIENT_BUFFER. Eine angegebene Puffergröße war nicht groß genug, oder sie wurde fälschlicherweise auf NULL festgelegt.
  • ERROR_INVALID_FLAGS. Die für Flags angegebenen Werte waren ungültig.
  • ERROR_INVALID_NAME. Für die Funktion wurde ein ungültiger Name angegeben. Beachten Sie, dass dieser Fehlercode alle Syntaxfehler abfängt.
  • ERROR_INVALID_PARAMETER. Jeder der Parameterwerte war ungültig.
  • ERROR_NO_UNICODE_TRANSLATION. In einer Zeichenfolge wurde ein ungültiger Unicode-Code gefunden.

Hinweise

Weitere Informationen finden Sie unter Hinweise zu IdnToAscii.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile winnls.h (windows.h einschließen)
Bibliothek Normaliz.lib
DLL Normaliz.dll
Verteilbare Komponente Microsoft Internationalized Domain Name (IDN)-Entschärfungs-APIs für Windows XP mit SP2 und höher oderWindows Server 2003 mit SP1

Weitere Informationen

Umgang mit internationalisierten Domänennamen (IDNs)

IdnToAscii

IdnToNameprepUnicode

Unterstützung für landessprachliche Sprachen

Unterstützungsfunktionen für nationalsprachliche Sprachen