Freigeben über


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 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 endende Nullzeichen nicht enthält. Wenn die Funktion fehlschlägt, empfängt dieser Parameter die erforderliche Größe des Puffers in Zeichen, die das endende Nullzeichen enthält.

[in] dwFlags

Steuerelemente (Kanonisierung). Wenn keine Kennzeichnungen angegeben werden, konvertiert die Funktion alle unsicheren Zeichen und Metasequenzen (z. B. .,\ .., und ...) in Escapesequenzen. Dieser Parameter kann einer der folgenden Werte sein:

Wert Bedeutung
ICU_BROWSER_MODE
Codiert oder decodiert keine Zeichen nach "#" oder "?", und entfernt nach "?" keine nachfolgenden Leerzeichen. Wenn dieser Wert nicht angegeben ist, wird die gesamte URL codiert und nachfolgende Leerzeichen entfernt.
ICU_DECODE
Konvertiert alle %XX Sequenzen in Zeichen, einschließlich Escapesequenzen, bevor die URL analysiert wird.
ICU_ENCODE_PERCENT
Codiert alle Prozentzeichen, die aufgetreten sind. Standardmäßig werden 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 unsichere Zeichen nicht in Escapesequenzen.
ICU_NO_META
Entfernt keine Metasequenzen (z. B. "." und "..") aus der URL.

Rückgabewert

Gibt TRUE zurück, wenn dies erfolgreich ist, oder FALSE andernfalls. Rufen Sie zum Abrufen erweiterter Fehlerinformationen die GetLastError--Funktion auf. Mögliche Fehler sind:

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

Bemerkungen

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 UrlCanonicalizeverwenden.

InternetCanonicalizeUrl immer standardmäßig codiert, auch wenn das ICU_DECODE Flag angegeben wurde. Zum Decodieren ohne Erneutes Codieren verwenden Sie ICU_DECODE | ICU_NO_ENCODE. Wenn das ICU_DECODE Flag ohne ICU_NO_ENCODEverwendet wird, wird die URL vor der Analyse decodiert. Unsichere Zeichen werden dann nach der Analyse erneut codiert. Diese Funktion behandelt willkürliche Protokollschemas, muss aber dazu Rückschlüsse aus dem unsicheren Zeichensatz erstellen.

Anwendungen, die InternetCanonicalizeUrl- aufrufen, wenn Internet Explorer 3.0 verwendet wird (oder wenn sie das ICU_ENCODE_PERCENT Flag für Internet Explorer 5 und höher festlegen), sollten die Verwendung dieser Funktion für eine bestimmte URL nachverfolgen. Wenn unsichere Zeichen in einer URL in Escapesequenzen konvertiert wurden, bewirkt die Verwendung von InternetCanonicalizeUrl erneut auf der URL (ohne Kennzeichnungen), dass die Escapesequenzen in eine andere Escapesequenz konvertiert werden. Ein Leerzeichen in einer URL würde z. B. in die Escapesequenz %20konvertiert. Das Aufrufen InternetCanonicalizeUrl erneut auf der URL bewirkt, dass die Escapesequenz %20 in die Escapesequenz %2520konvertiert wird, da das % Zeichen ein unsicheres Zeichen ist, das für Escapesequenzen reserviert ist und durch die Funktion durch die Escapesequenz %25ersetzt wird.

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

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

Anmerkung

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
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- wininet.h
Library Wininet.lib
DLL- Wininet.dll

Siehe auch

Behandeln von Uniform Resource Locators

WinINet-Funktionen