3 Stimmen

Gibt es eine COM-zugängliche Bibliothek, die die URL-Kodierung ermöglicht?

Mit VB6. Es ist nicht schwer, Ihre eigenen zu rollen, aber ich fragte mich, ob es eine vorgefertigte da draußen war?

4voto

MarkJ Punkte 29670

Angeregt durch Bobs Kommentar: Google fand diesen Wrapper für UrlEscape en un Newsgroup-Beitrag von Karl Peterson.

Private Declare Function UrlEscape Lib "Shlwapi.dll" Alias "UrlEscapeA" ( _
  ByVal pszURL As String, ByVal pszEscaped As String, ByRef pcchEscaped As Long, _
  ByVal dwFlags As Long) As Long

Private Const URL_DONT_ESCAPE_EXTRA_INFO As Long = &H2000000

Private Function EscapeURL(ByVal URL As String) As String
' Purpose:  A thin wrapper for the URLEscape API function. '
Dim EscTxt As String
Dim nLen As Long

' Create a maximum sized buffer. '
nLen = Len(URL) * 3
EscTxt = Space$(nLen)

If UrlEscape(URL, EscTxt, nLen, URL_DONT_ESCAPE_EXTRA_INFO) = 0 Then
  EscapeURL = Left$(EscTxt, nLen)
End If
End Function

Haftungsausschluss: Ich habe diesen Code nicht selbst ausprobiert.

2voto

i_am_jorf Punkte 52346

Sie sollten Folgendes verwenden CoInternetParseUrl() mit URL_ENCODE.

Das Beispiel aus MSDN, modifiziert für Ihre Zwecke. Natürlich müssen Sie herausfinden, wie Sie CoInternetParseUrl() von VB6 aus aufrufen können, aber Sie scheinen auf dem richtigen Weg zu sein.

#include <wininet.h>

// ...

WCHAR encoded_url[INTERNET_MAX_URL_LENGTH];
DWORD encoded_url_len = ARRAYSIZE(encoded_url);

// Assumes |url| contains the value you want to encode.

HRESULT hr = CoInternetParseUrl(url, PARSE_CANONICALIZE, URL_ENCODE, encoded_url, 
                        INTERNET_MAX_URL_LENGTH, & encoded_url_len, 0);
if (SUCCEEDED(hr)) {
  // Do stuff...
}

Je nach Bedarf können Sie PARSE_ENCODE anstelle von PARSE_CANONICALIZE verwenden.

Erwägen Sie auch die Verwendung von google-url . Könnte schwierig sein, da es C++ und nicht COM-basiert ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X