Share via


InternetCanonicalizeUrlW-Funktion (wininet.h)

Kanonisiert eine URL, einschließlich der Konvertierung unsicherer Zeichen und Leerzeichen in Escapesequenzen.

Syntax

BOOL InternetCanonicalizeUrlW(
  [in]      LPCWSTR lpszUrl,
  [out]     LPWSTR  lpszBuffer,
  [in, out] LPDWORD lpdwBufferLength,
  [in]      DWORD   dwFlags
);

Parameter

[in] lpszUrl

Ein Zeiger auf die Zeichenfolge, die die zu kanonische URL enthält.

[out] lpszBuffer

Ein Zeiger auf den Puffer, der die resultierende kanonisierte URL empfängt.

[in, out] lpdwBufferLength

Ein Zeiger auf eine Variable, die die Größe des lpszBuffer-Puffers in Zeichen enthält. Wenn die Funktion erfolgreich ist, empfängt dieser Parameter die Anzahl der Zeichen, die tatsächlich in den lpszBuffer-Puffer kopiert wurden, der das abschließende NULL-Zeichen nicht enthält. Wenn die Funktion fehlschlägt, empfängt dieser Parameter die erforderliche Größe des Puffers in Zeichen, die das abschließende NULL-Zeichen enthält.

[in] dwFlags

Steuert die Kanonisierung. Wenn keine Flags angegeben werden, konvertiert die Funktion alle unsicheren Zeichen und Metasequenzen (z. B. .,\ .., und ...) in Escapesequenzen. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
ICU_BROWSER_MODE
Codiert oder decodiert keine Zeichen nach "#" oder "?" und entfernt nachfolgende Leerzeichen nach "?" nicht. Wenn dieser Wert nicht angegeben wird, wird die gesamte URL codiert, und nachfolgende Leerzeichen werden entfernt.
ICU_DECODE
Konvertiert alle %XX-Sequenzen in Zeichen, einschließlich Escapesequenzen, bevor die URL analysiert wird.
ICU_ENCODE_PERCENT
Codiert alle prozentual gefundenen Zeichen. Standardmäßig sind Prozentzeichen nicht codiert. Dieser Wert ist in Microsoft Internet Explorer 5 und höher verfügbar.
ICU_ENCODE_SPACES_ONLY
Codiert nur Leerzeichen.
ICU_NO_ENCODE
Konvertiert keine unsicheren Zeichen in Escapesequenzen.
ICU_NO_META
Entfernt keine Metasequenzen (z. B. "." und "..") aus der URL.

Rückgabewert

Gibt TRUE zurück, wenn erfolgreich, andernfalls FALSE . Um erweiterte Fehlerinformationen zu erhalten, rufen Sie die GetLastError-Funktion auf. Mögliche Fehler sind:

Rückgabecode Beschreibung
ERROR_BAD_PATHNAME
Die URL konnte nicht kanonisiert werden.
ERROR_INSUFFICIENT_BUFFER
Die kanonische URL ist zu groß, um in den bereitgestellten Puffer zu passen. Der Parameter lpdwBufferLength wird auf die Größe des Puffers in Bytes festgelegt, der für die kanonisierte URL erforderlich ist.
ERROR_INTERNET_INVALID_URL
Das Format der URL ist ungültig.
ERROR_INVALID_PARAMETER
Es ist ein ungültiger Parameter für Zeichenfolgen, Puffer, Puffergröße oder Flags vorhanden.

Hinweise

In Internet Explorer 4.0 und höher funktioniert InternetCanonicalizeUrl immer so, als wäre das flag ICU_BROWSER_MODE festgelegt. Clientanwendungen, die die gesamte URL kanonisieren müssen, sollten entweder CoInternetParseUrl (mit der Aktion PARSE_CANONICALIZE und dem Flag URL_ESCAPE_UNSAFE) oder UrlCanonicalize verwenden.

InternetCanonicalizeUrl codiert immer standardmäßig, auch wenn das flag ICU_DECODE angegeben wurde. Verwenden Sie zum Decodieren ohne erneute Codierung ICU_DECODE | ICU_NO_ENCODE. Wenn das ICU_DECODE-Flag ohne ICU_NO_ENCODE verwendet wird, wird die URL vor der Analyse decodiert. Unsichere Zeichen werden dann nach der Analyse neu codiert. Diese Funktion verarbeitet beliebige Protokollschemas, aber dazu muss sie Rückschlüsse aus dem unsicheren Zeichensatz machen.

Anwendungen, die InternetCanonicalizeUrl bei Verwendung von Internet Explorer 3.0 (oder beim Festlegen des ICU_ENCODE_PERCENT-Flags für Internet Explorer 5 und höher) aufrufen, sollten die Verwendung dieser Funktion für eine bestimmte URL nachverfolgen. Wenn unsichere Zeichen in einer URL in Escapesequenzen konvertiert wurden, bewirkt die erneute Verwendung von InternetCanonicalizeUrl in der URL (ohne Flags), dass die Escapesequenzen in eine andere Escapesequenz konvertiert werden. Beispielsweise würde ein Leerzeichen in einer URL in die Escapesequenz %20 konvertiert. Das erneute Aufrufen von InternetCanonicalizeUrl für die URL würde dazu führen, dass die Escapesequenz %20 in die Escapesequenz %2520 konvertiert wird, da das %-Zeichen ein unsicheres Zeichen ist, das für Escapesequenzen reserviert ist und durch die Funktion durch die Escapesequenz %25 ersetzt wird.

Wie alle anderen Aspekte der WinINet-API kann diese Funktion nicht sicher innerhalb von DllMain oder den Konstruktoren und Destruktoren globaler Objekte aufgerufen werden.

Hinweis WinINet unterstützt keine Serverimplementierungen. Darüber hinaus sollte es nicht von einem Dienst verwendet werden. Verwenden Sie für Serverimplementierungen oder Dienste Microsoft Windows HTTP Services (WinHTTP).
 

Hinweis

Der wininet.h-Header definiert InternetCanonicalizeUrl als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wininet.h
Bibliothek Wininet.lib
DLL Wininet.dll

Weitere Informationen

Behandeln von Uniform Resource Locators

WinINet-Funktionen