Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Zeichencodierung mit Indy (https://www.delphipraxis.net/11969-zeichencodierung-mit-indy.html)

whook 17. Nov 2003 23:20


Zeichencodierung mit Indy
 
Hallo Leute,
ich habe echt Probleme mit den verschiedenen charset Codierungen.

Ich habe sowohl versucht UTF-8 codierte Zeichen mit Utf8ToAnsi zu decodieren also andere Zeichen mit Utility Library v.1.0.3. Irgendwie klappt alles nicht so richtig dh. gar nicht ;/

Beispielcode so angepasst, damit man sieht was ich da mache:

Delphi-Quellcode:
var
text:string;
begin
text:=Iso8859_2ToUTF16str(IdHTTP1.get('http://80.110.132.33/cgh/skupno/news.cfm?id=12793&jez=2'));
memo1.Text:=text;
end;
ist 8859_2 codiert.
Umlaute kommen dennoch nicht decodiert






Delphi-Quellcode:
var
text:string;
begin
text:=Utf8ToAnsi(IdHTTP1.get('http://www.diepresse.com/artikel.aspx?id=339914'));
memo1.Text:=text;
end;
ist UTF-8 codiert.
Umlaute kommen dennoch nicht decodiert


Hat jemand eine Ahnung, was ich falsch mache, irgendwie gehts mir nämlich mittlerweile so: :wall:

Danke

[edit=r_kerber]Delphi-Tags gesetzt! Mfg, r_kerber[/edit]

Wormid 18. Nov 2003 00:08

Re: Zeichencodierung mit Indy
 
Moin,

Unicodes sind eher Sakuras Spezialgebiet... aber ich versuche auch einfach mal mein Glück: Ich bin nicht sicher, aber wie mir scheint, liefert die Funktion Iso8859_2ToUTF16str einen WideString zurück... und das funktioniert scheinbar irgendwie nicht. (Interessante Frage: Ist das Memo (und TStringList, TStrings...) WideString-fähig?)

Aber so konnte ich das Beispiel von Dir sauber laden:
Delphi-Quellcode:
  Memo1.Text := Utf8ToAnsi(IdHTTP1.get('http://80.110.132.33/cgh/skupno/news.cfm?id=12793&jez=2'));
Die Funktion Utf8ToAnsi ist ne Delphi Funktion, damit bräuchtest du dann auch die Extra Unit UnicodeUtils nicht mehr.

Gruß

Wormid

scp 18. Nov 2003 00:17

Re: Zeichencodierung mit Indy
 
In HTML-Dateien wird UTF-8 ja z.B. in der Form =E2=B4 in Ansi dargestellt, die Funktion Utf8ToAnsi arbeitet jedoch mit binären Werten, also in dem Fall Chr($E2)+Chr($B4), deshalb muss die Umwandlung vor dem übergeben an Utf8ToAnsi dementsprechend erfolgen.

Wormid 18. Nov 2003 00:33

Re: Zeichencodierung mit Indy
 
:wiejetzt:

"Meine" Version da oben war die einzigste, die die Umlaute in dem Memo korrekt dargestellt hat. Aber wie gesagt, sicher bin ich mir bei Unicode & co. sowieso nicht.

Sauber ist die Lösung sowieso insgesamt nicht, weil dabei völlig ignoriert wird, was in dem Dokument für ein Zeichensatz angegeben ist...

whook 18. Nov 2003 12:12

Re: Zeichencodierung mit Indy
 
Zitat:

Zitat von Wormid
Aber so konnte ich das Beispiel von Dir sauber laden:
Delphi-Quellcode:
  Memo1.Text := Utf8ToAnsi(IdHTTP1.get('http://80.110.132.33/cgh/skupno/news.cfm?id=12793&jez=2'));

Hallo zunächst mal Danke für die Antwort,
aber wenn du genau schaust, werden die Umlaute nicht umgewandelt in dem Beispiel.

Zitat:

Zitat von Browserergebnis
Radio Stimme, das Radio der Initiative Minderheiten auf der Radio Orange, bringt am Dienstag eine Reportage C<ber die hochkarC$tige Posiumsdiskussion der Csterreichischen Liga fC<r Menschenrechte "Wozu noch Minderheiten?".


Wormid 18. Nov 2003 12:37

Re: Zeichencodierung mit Indy
 
Bei mir schon... :gruebel:

Code:
<td valign="top">

Radio Stimme, das Radio der Initiative Minderheiten auf der Radio Orange, bringt am Dienstag eine Reportage über die hochkarätige Posiumsdiskussion der Österreichischen Liga für Menschenrechte "Wozu noch Minderheiten?".

whook 18. Nov 2003 12:39

Re: Zeichencodierung mit Indy
 
Zitat:

Zitat von Wormid
Bei mir schon... :gruebel:

Code:
<td valign="top">

Radio Stimme, das Radio der Initiative Minderheiten auf der Radio Orange, bringt am Dienstag eine Reportage über die hochkarätige Posiumsdiskussion der Österreichischen Liga für Menschenrechte "Wozu noch Minderheiten?".

hmm jetzt wirds aber spannend ;)
wo ist nun der unterschied eventuell im memo1.font.charset ?

Wormid 18. Nov 2003 13:37

Re: Zeichencodierung mit Indy
 
Memo1.Font.Charset ist gleich DEFAULT_CHARSET, die Schrift ist "MS Sans Serif", Size 8...

:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 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