![]() |
Wort und Umlaute etc...
Ich habe zb ein Wort Mühe das soll zu M%C3%BChe werden - nur wie codiere ich sowas?!
Irgendwie finde ich dazu nichts passendes zumal ich auch D5 STD nutze! |
Re: Wort und Umlaute etc...
Moin Sebastian,
dafür könntest Du ![]() Diese befindet sich in der shlwapi.dll. Du müsstest die Funktion nur selber importieren. |
Re: Wort und Umlaute etc...
|
Re: Wort und Umlaute etc...
Zitat:
Na ja das war nur ein beispiel! Es geht um ALLES Buchstaben die NICHT in einer URL angeben werden! ÜÖÄß etc.... |
Re: Wort und Umlaute etc...
Zitat:
|
Re: Wort und Umlaute etc...
Zitat:
Delphi-Quellcode:
:mrgreen:
uses
ShLwApi; |
Re: Wort und Umlaute etc...
Schon klar :-) habe ich auch so gemacht das UrlEscape nicht das ist was ich suche da es den IE5 mindestens benötigt! Mlchte mich nicht so beschränken...
habe dann dieses versucht:
Delphi-Quellcode:
NEW_SEARCH_STRING_TEMP := '';
for i := 1 to Length(NEW_SEARCH_STRING) do if NEW_SEARCH_STRING[i] in ['0'..'9', 'A'..'Z', '[', ']', '_', 'a'..'z'] then NEW_SEARCH_STRING_TEMP := NEW_SEARCH_STRING_TEMP + NEW_SEARCH_STRING[i] else NEW_SEARCH_STRING_TEMP := NEW_SEARCH_STRING_TEMP + '%' + IntToHex(Ord(NEW_SEARCH_STRING[i]), 2); daraus wird Mühe zu M%FChe STATT wie es sein sollte M%C3%BChe |
Re: Wort und Umlaute etc...
Zitat:
ps.: ShLwApi habe ich nicht ;-) |
Re: Wort und Umlaute etc...
Zitat:
|
Re: Wort und Umlaute etc...
Hallo Sebastian,
wenn du die Indy Komponenten installiert hast, dann kannst du auch die Klassenmethode ![]() Grüße vom marabu |
Re: Wort und Umlaute etc...
Zitat:
|
Re: Wort und Umlaute etc...
Hallo Sebastian,
in Anlehnung an den von dir studierten Thread ![]()
Delphi-Quellcode:
Für das Encoding muss der Code ein kleinwenig anders aussehen:
uses
idURI; begin with TIdURI do // ShowMessage(UrlEncode(AnsiToUtf8('unmöglich'))); // geht leider nicht ShowMessage(Utf8ToAnsi(UrlDecode('unm%C3%B6glich'))); // geht end;
Delphi-Quellcode:
Freundliche Grüße
begin
with TIdURI.Create do try ShowMessage(PathEncode(AnsiToUtf8('unmöglich'))); finally Free; end; end; |
Re: Wort und Umlaute etc...
ich danke Euch :-) ich bin nun glücklich ;-)
ps.: mein indy kennt kein AnsiToUtf8 |
Re: Wort und Umlaute etc...
Stimmt, D5 kennt AnsiToUtf8() noch nicht.
Vielleicht magst du es mit diesen beiden Funktionen probieren?
Delphi-Quellcode:
Getippt und nur einmal getestet.
function UTF8Decode(const s: string): WideString;
var n: Integer; begin n := MultiByteToWideChar(CP_UTF8, 0, @s[1], Length(s), nil, 0); SetLength(Result, n); MultiByteToWideChar(CP_UTF8, 0, @s[1], Length(s), @Result[1], n); end; function UTF8Encode(const ws: WideString): string; var n: Integer; begin n := WideCharToMultiByte(CP_UTF8, 0, @ws[1], Length(ws), nil, 0, nil, nil); SetLength(Result, n); WideCharToMultiByte(CP_UTF8, 0, @ws[1], Length(ws), @Result[1], n, nil, nil); end;
Delphi-Quellcode:
Freundliche Grüße
ShowMessage(Utf8Decode(Utf8Encode('äöüÄÖÜß')));
|
Re: Wort und Umlaute etc...
meine gefundene Lösung (nachdem ich dann wusste wonach ich suchen kann hier im Forum) ist das hier:
Delphi-Quellcode:
function StringToWideStringEx(const S: string; CodePage: Word): WideString;
var InputLength, OutputLength: Integer; begin InputLength := Length(S); OutputLength := MultiByteToWideChar(CodePage, 0, PChar(S), InputLength, nil, 0); SetLength(Result, OutputLength); MultiByteToWideChar(CodePage, 0, PChar(S), InputLength, PWideChar(Result), OutputLength); end; function WideStringToStringEx(const WS: WideString; CodePage: Word): string; var InputLength, OutputLength: Integer; begin InputLength := Length(WS); OutputLength := WideCharToMultiByte(CodePage, 0, PWideChar(WS), InputLength, nil, 0, nil, nil); SetLength(Result, OutputLength); WideCharToMultiByte(CodePage, 0, PWideChar(WS), InputLength, PChar(Result), OutputLength, nil, nil); end; function UTF8ToWideString(const S: string): WideString; begin Result := StringToWideStringEx(S, CP_UTF8); end; function WideStringToUTF8(const WS: WideString): string; begin Result := WideStringToStringEx(WS, CP_UTF8); end; Ist deinem sehr ähnlich :-) |
Re: Wort und Umlaute etc...
Ja, die Ähnlichkeit ist verblüffend. Du hast sogar daran gedacht, dass man eventuell UCS2 in eine fremde Sprache übersetzen möchte. Für die lokal installierte ACP kannst du den WideString und AnsiString auch einfach durch Zuweisung konvertieren - Delphi macht dann schon das Richtige.
|
Re: Wort und Umlaute etc...
jo
|
Re: Wort und Umlaute etc...
Ich musste hier den Thread nochmal ausbuddeln.
da mein Problem immer noch da ist! Also ich erkläre erstmal! Es geht in diesem Beispiel immer um das Wort "Mühe" mal wird es so kodiert zb bei Amazon als "M%FChe" ![]() und dann zb bei SoftwareLoad oder myVideo als "M%C3%BChe" ![]() untereinander sind diese Schreibweisen nicht kompatibel! Wie kann ich nun aus meinem Programm heraus eine URL erzeugen mit dem Wort Mühe das JEDER Suche gerecht wird udn in JEDER Funktioniert!? Daran verzweifel ich gerade maßlos! Ich danke euch für Eure Hilfe - Hieeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeelfe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 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