Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wort und Umlaute etc... (https://www.delphipraxis.net/106765-wort-und-umlaute-etc.html)

Bauer007 16. Jan 2008 11:41


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!

Christian Seehase 16. Jan 2008 11:44

Re: Wort und Umlaute etc...
 
Moin Sebastian,

dafür könntest Du MSDN-Library durchsuchenUrlEscape nehmen.
Diese befindet sich in der shlwapi.dll.
Du müsstest die Funktion nur selber importieren.

dominikkv 16. Jan 2008 11:45

Re: Wort und Umlaute etc...
 
Such mal nach Hier im Forum suchenStringReplace
Delphi-Quellcode:
StringReplace(myText, 'ü', '%C3%BC', [rfReplaceAll]);

Bauer007 16. Jan 2008 11:46

Re: Wort und Umlaute etc...
 
Zitat:

Zitat von dominikkv
Such mal nach Hier im Forum suchenStringReplace
Delphi-Quellcode:
StringReplace(myText, 'ü', '%C3%BC', [rfReplaceAll]);


Na ja das war nur ein beispiel! Es geht um ALLES Buchstaben die NICHT in einer URL angeben werden!

ÜÖÄß etc....

dominikkv 16. Jan 2008 11:52

Re: Wort und Umlaute etc...
 
Zitat:

Zitat von Bauer007
Zitat:

Zitat von dominikkv
Such mal nach Hier im Forum suchenStringReplace
Delphi-Quellcode:
StringReplace(myText, 'ü', '%C3%BC', [rfReplaceAll]);


Na ja das war nur ein beispiel! Es geht um ALLES Buchstaben die NICHT in einer URL angeben werden!

ÜÖÄß etc....

Du kannst diese Prozedur auch mehrmals mit verschiedenen Buchstaben anwenden :zwinker:

uligerhardt 16. Jan 2008 12:05

Re: Wort und Umlaute etc...
 
Zitat:

Zitat von Christian Seehase
dafür könntest Du MSDN-Library durchsuchenUrlEscape nehmen.
Diese befindet sich in der shlwapi.dll.
Du müsstest die Funktion nur selber importieren.

Delphi-Quellcode:
uses
  ShLwApi;
:mrgreen:

Bauer007 16. Jan 2008 12:07

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

Bauer007 16. Jan 2008 12:07

Re: Wort und Umlaute etc...
 
Zitat:

Zitat von Bauer007
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




ps.: ShLwApi habe ich nicht ;-)

Christian Seehase 16. Jan 2008 12:08

Re: Wort und Umlaute etc...
 
Zitat:

Zitat von uligerhardt
Zitat:

Zitat von Christian Seehase
dafür könntest Du MSDN-Library durchsuchenUrlEscape nehmen.
Diese befindet sich in der shlwapi.dll.
Du müsstest die Funktion nur selber importieren.

Delphi-Quellcode:
uses
  ShLwApi;
:mrgreen:

Die kennt allerdings noch nicht mal D7, geschweige denn D5 ;-)

marabu 16. Jan 2008 12:11

Re: Wort und Umlaute etc...
 
Hallo Sebastian,

wenn du die Indy Komponenten installiert hast, dann kannst du auch die Klassenmethode UrlEncode() von TIdURI verwenden. Beachte auch, dass %C3%BC die UTF-8 Kodierung des ü ist.

Grüße vom marabu

uligerhardt 16. Jan 2008 12:14

Re: Wort und Umlaute etc...
 
Zitat:

Zitat von Christian Seehase
Die kennt allerdings noch nicht mal D7, geschweige denn D5 ;-)

Ups. immer diese Feinheiten. :-D :oops:

marabu 16. Jan 2008 12:28

Re: Wort und Umlaute etc...
 
Hallo Sebastian,

in Anlehnung an den von dir studierten Thread UTF8 Codierung:

Delphi-Quellcode:
uses
  idURI;

begin
  with TIdURI do
    // ShowMessage(UrlEncode(AnsiToUtf8('unmöglich'))); // geht leider nicht
    ShowMessage(Utf8ToAnsi(UrlDecode('unm%C3%B6glich'))); // geht
end;
Für das Encoding muss der Code ein kleinwenig anders aussehen:

Delphi-Quellcode:
begin
  with TIdURI.Create do
  try
    ShowMessage(PathEncode(AnsiToUtf8('unmöglich')));
  finally
    Free;
  end;
end;
Freundliche Grüße

Bauer007 16. Jan 2008 12:40

Re: Wort und Umlaute etc...
 
ich danke Euch :-) ich bin nun glücklich ;-)


ps.: mein indy kennt kein AnsiToUtf8

marabu 18. Jan 2008 11:35

Re: Wort und Umlaute etc...
 
Stimmt, D5 kennt AnsiToUtf8() noch nicht.

Vielleicht magst du es mit diesen beiden Funktionen probieren?

Delphi-Quellcode:
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;
Getippt und nur einmal getestet.

Delphi-Quellcode:
ShowMessage(Utf8Decode(Utf8Encode('äöüÄÖÜß')));
Freundliche Grüße

Bauer007 18. Jan 2008 11:38

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 :-)

marabu 18. Jan 2008 11:47

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.

delphinia 18. Jan 2008 11:50

Re: Wort und Umlaute etc...
 
jo

Bauer007 12. Feb 2008 14:15

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"
http://www.amazon.de/s/ref=nb_ss_w?_...eywords=M%FChe

und dann zb bei SoftwareLoad oder myVideo als "M%C3%BChe"
http://www.myvideo.de/news.php?rubri...=&searchOrder=


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 01:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz