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 |
---|---|
|
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. |
|
Konvertiert alle %XX-Sequenzen in Zeichen, einschließlich Escapesequenzen, bevor die URL analysiert wird. |
|
Codiert alle prozentual gefundenen Zeichen. Standardmäßig sind Prozentzeichen nicht codiert. Dieser Wert ist in Microsoft Internet Explorer 5 und höher verfügbar. |
|
Codiert nur Leerzeichen. |
|
Konvertiert keine unsicheren Zeichen in Escapesequenzen. |
|
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 |
---|---|
|
Die URL konnte nicht kanonisiert werden. |
|
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. |
|
Das Format der URL ist ungültig. |
|
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
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für