![]() |
URLDownloadToFile und umlaute
mein Query String.
'https://api.themoviedb.org/3/search/movie?api_key=MyKey&language=de&query=Drachenzähme n leicht gemacht Die guten alten Zeiten' funktioniert nicht Hingegen 'https://api.themoviedb.org/3/search/movie?api_key=MyKey&language=de&query=Drachenzaehm en leicht gemacht Die guten alten Zeiten' schon. woran kann das liegen. Muss ich da irgendwas besonderes beachten?
Delphi-Quellcode:
function TTheMDB.BuildSearchMovieQuery(MovieTitle: string; UseQueryMode: BOOL): string;
begin Result := ''; if not UseQueryMode then Result := 'https://api.themoviedb.org/3/search/movie?api_key=' else Result := 'https://api.themoviedb.org/3/search/tv?api_key='; Result := Result + GetApiKey; Result := Result + '&language='; Result := Result + UseThisLanguage; Result := Result + '&query='; Result := Result + MovieTitle; end;
Delphi-Quellcode:
Url := BuildSearchMovieQuery(MovieTitle, QueryMode);
Ist dann der Query String den ich sende. Furchtbar das die immer an ihrer Webseite Rumschrauben. |
AW: URLDownloadToFile und umlaute
![]() |
AW: URLDownloadToFile und umlaute
Zitat:
Hatte vorher mit WideString versucht brachte aber auch nichts.
Delphi-Quellcode:
function TTheMDB.BuildSearchMovieQuery(MovieTitle: string; UseQueryMode: BOOL): UTF8String;
begin Result := ''; if not UseQueryMode then Result := 'https://api.themoviedb.org/3/search/movie?api_key=' else Result := 'https://api.themoviedb.org/3/search/tv?api_key='; Result := Result + GetApiKey; Result := Result + '&language='; Result := Result + UseThisLanguage; Result := Result + '&query='; Result := Result + MovieTitle; end; var Url: UTF8String; |
AW: URLDownloadToFile und umlaute
Ich sehe leider nicht, wie/womit du die Daten postest.
Hast du eventuell vergessen den String zu encodieren? Wenn Ja, dann liegt es am ä. Zum Beispiel mit Indy:
Delphi-Quellcode:
uses IDURI;
... TIdURI.URLEncode('https://api.themoviedb.org/3/search/movie?api_key=MyKey&language=de&query=Drachenzähme n leicht gemacht Die guten alten Zeiten'); [[ Wenn ein Zeichen z nicht im Bereich 'a'..'z', 'A'..'Z', '0'..'9' liegt (in deinem Beispiel ä), muss z so gesendet werden: ( '%' + IntToHex(ord(z), 2)). ]] |
AW: URLDownloadToFile und umlaute
Zitat:
Delphi-Quellcode:
if (URLDownloadToFile(nil, PWideChar(Url), PWideChar(TxtFile), 0, nil) = S_OK) then
Danke für die Info mit Utf8String geht es. Nope geht doch nicht. Muß mich dann wohl mit dem enkodieren mal beschäftigen. Sehe gerade du hast die Lösung ja schon gepostet.. ;) Danke! |
AW: URLDownloadToFile und umlaute
Oh schön der Klassiker.
Du übermittelst ja die Daten in der URL. URL sind als ASCII spezifiziert. D.h. alles was das 8te Bit gesetzt hat, muss URL-Encoded werden. Dann kommen wir zu dem Encodig der Texte - also UTF-8, UTF-16, UCS oder vielleicht ISO-8859-1 ? In dieser RFC findet man eine Antwort: ![]() |
AW: URLDownloadToFile und umlaute
Wenn du mORMot SynCommons verwendest, mache folgendes:
Delphi-Quellcode:
Nicht vergessen, je nach verwendeten String-Typ, GetApiKey(), UseThisLanguage() und MovieTitle() notfalls in StringToUtf8() einpacken.
const
URL_TEMPLATE = 'https://api.themoviedb.org/3/search/movie?api_key=%&language=%&query=%'; var url: SockString; begin url := StringToAnsi7(FormatString(URL_TEMPLATE, [GetApiKey, UseThisLanguage, MovieTitle])) ... Bis bald... Thomas |
AW: URLDownloadToFile und umlaute
Zitat:
Ich würde das gerne auf mORMot SynCommons portieren aber im Moment etwas zu hoch für mich. Die Idee Ansicht ist aber :thumb: |
AW: URLDownloadToFile und umlaute
Zitat:
Bis bald... Thomas |
AW: URLDownloadToFile und umlaute
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz