InternetCanonicalizeUrlA-Funktion (wininet.h)
Kanonisiert eine URL, die das Konvertieren unsicherer Zeichen und Leerzeichen in Escapesequenzen umfasst.
Syntax
BOOL InternetCanonicalizeUrlA(
[in] LPCSTR lpszUrl,
[out] LPSTR lpszBuffer,
[in, out] LPDWORD lpdwBufferLength,
[in] DWORD dwFlags
);
Parameter
[in] lpszUrl
Ein Zeiger auf die Zeichenfolge, die die zu kanonisierende 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, wobei das beendende NULL-Zeichen nicht enthalten ist. Wenn die Funktion fehlschlägt, empfängt dieser Parameter die erforderliche Größe des Puffers in Zeichen, die das beendende NULL-Zeichen enthält.
[in] dwFlags
Steuert die Kanonisierung. Wenn keine Flags angegeben sind, 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 nach "?" nicht den nachfolgenden Leerraum. Wenn dieser Wert nicht angegeben wird, wird die gesamte URL codiert, und der nachfolgende Leerraum wird entfernt. |
|
Konvertiert alle %XX-Sequenzen in Zeichen, einschließlich Escapesequenzen, bevor die URL analysiert wird. |
|
Codiert alle gefundenen Prozentzeichen. 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 der Vorgang erfolgreich war, oder andernfalls FALSE . Um erweiterte Fehlerinformationen zu erhalten, rufen Sie die GetLastError-Funktion auf. Zu den möglichen Fehlern zählen die folgenden.
Rückgabecode | Beschreibung |
---|---|
|
Die URL konnte nicht kanonisiert werden. |
|
Die kanonisierte URL ist zu groß, um in den bereitgestellten Puffer zu passen. Der lpdwBufferLength-Parameter ist 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 gibt einen ungültigen Parameter für Zeichenfolge, Puffer, Puffergröße oder Flags. |
Hinweise
In Internet Explorer 4.0 und höher funktioniert InternetCanonicalizeUrl immer so, als ob das ICU_BROWSER_MODE-Flag festgelegt ist. 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 wird immer standardmäßig codiert, auch wenn das ICU_DECODE-Flag angegeben wurde. Verwenden Sie zum Decodieren ohne Erneutes Decodieren 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 nach der Analyse erneut codiert. Diese Funktion verarbeitet beliebige Protokollschemas, muss aber dazu Rückschlüsse aus dem unsicheren Zeichensatz ziehen.
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 auf einer bestimmten URL nachverfolgen. Wenn unsichere Zeichen in einer URL in Escapesequenzen konvertiert wurden, werden die Escapesequenzen durch erneute Verwendung von InternetCanonicalizeUrl auf der URL (ohne Flags) in eine andere Escapesequenz konvertiert. Beispielsweise würde ein Leerzeichen in einer URL in die Escapesequenz %20 konvertiert. Das erneute Aufrufen von InternetCanonicalizeUrl auf der 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 nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
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 |