Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idhttp1.get() - iSO 8859-15 - Problem - darstellung von "öÖäÄßÜü" (https://www.delphipraxis.net/183410-idhttp1-get-iso-8859-15-problem-darstellung-von-oeoeaeaessueue.html)

Bladefire 7. Jan 2015 18:31

idhttp1.get() - iSO 8859-15 - Problem - darstellung von "öÖäÄßÜü"
 
Hallo,

ich habe ein problem beim darstellen des quellcodes den ich zuvor heruntergeladen habe. Die Umlaute werden nicht korrekt angezeigt. (sie werden als 2 Zeichen dargestellt. Darum denke ich, dass delphi den text in einer kodierung darstellt, die kleiner als iso-8859-15 ist)

Code:
IdHTTP1.Request.AcceptCharSet := 'iso-8859-15,iso-8859-1, utf-8, utf-16, *;q=0.1';
memo1.text := idhttp1.get(URL);

Showmessage(idhttp1.Response.charset)
(*
  = charset=iso-8859-15
*)
Über antworten freue ich mich sehr.

Lg Simon

Bernhard Geyer 7. Jan 2015 19:23

AW: idhttp1.get() - iSO 8859-15 - Problem - darstellung von "öÖäÄßÜü"
 
wie schauen denn die Sonderzeichen aus? Ich tipp mal das du einfach UTF8To(Wide)String aufrufen musst.

Bladefire 7. Jan 2015 19:46

AW: idhttp1.get() - iSO 8859-15 - Problem - darstellung von "öÖäÄßÜü"
 
hat leider nicht funktioniert.



ß wird als à dargestellt und die bitfolge würde so aussehen: //(11011111) DF

Die großen Umlaute sind ebenfalls betroffen.

ü wird als ÃŒ dargestellt und die bitfolge würde so aussehen: //(11111100)FC

ä wird als À dargestellt und die bitfolge würde so aussehen: //(11100100) E4

ö wird als ö dargestellt und die bitfolge würde so aussehen://(11110110) F6

sofern man darauf vertraun kann, dass ich die Daten ISO 8859-15 kodiert erhalten habe.

Bladefire 8. Jan 2015 14:03

AW: idhttp1.get() - iSO 8859-15 - Problem - darstellung von "öÖäÄßÜü"
 
*push

Bernhard Geyer 8. Jan 2015 14:12

AW: idhttp1.get() - iSO 8859-15 - Problem - darstellung von "öÖäÄßÜü"
 
Nach dem Mapping von http://en.wikipedia.org/wiki/ISO/IEC...rom_ISO-8859-1 würde ich sagen das eigentlich UTF8-Codierte Daten geliefert wurden, aber durch das Mapping diese kaputt gemacht wurden.
würde

ü -(UTF8)-> ü -(Mapping)-> ÃŒ

Evtl. reicht es einfach das Mapping umzudrehen Œ -> ¼ um dann UTF8 nach (Wide)String zu wandeln.

Bladefire 8. Jan 2015 15:09

AW: idhttp1.get() - iSO 8859-15 - Problem - darstellung von "öÖäÄßÜü"
 
Danke für die Antwort.

ich fasse es nochmal zusammen, ob ich es auch richtig verstanden habe.

ö währe in utf-8: 11000011 10110110

11000011 10110110 ist Jedoch in ISO 8859-15: ö


ü währe in utf-8: 11000011 10111100

11000011 10111100 ist Jedoch in ISO 8859-15: Ì

Schaut gut aus!

Ich erhalte die daten von der Webseite in utf-8 und sie werden fälschlicherweise als ISO 8859-15 kodiert betrachtet.

Wie kann ich das mapping umdrehen?


Ich dachte dass ich es so machen kann, damit der text als utf-8 betrachtet wird.
Code:
SetCodePage(Text,65001,false);
memo1.text := Text
Der Buchstabe "ö" wird danach korrekt angezeigt.
ß = �?
ä = À
ü = Ì

lg Simon

Bladefire 8. Jan 2015 16:47

AW: idhttp1.get() - iSO 8859-15 - Problem - darstellung von "öÖäÄßÜü"
 
*push

Bladefire 8. Jan 2015 18:21

AW: idhttp1.get() - iSO 8859-15 - Problem - darstellung von "öÖäÄßÜü"
 
Ich wollte außerdem noch Fragen:

Woher hast du das "ü"?

Bladefire 8. Jan 2015 22:38

AW: idhttp1.get() - iSO 8859-15 - Problem - darstellung von "öÖäÄßÜü"
 
Ich habe mir das ganze (das was ich von der Webseite gefunden habe, und in einen ganz normalen string ohne bearbeitung ausgegeben habe) nochmals in einen hexadezimaleditor (NEXT-Soft HEX Editor) angeschaut.


Buchstabe:
ä
Stattdesen angezeigtes:
À
utf-8 Hexadezimal Code von ä
c3 a4
utf-8 Hexadezimal Code von ä würde als ISO-589-15 ergeben:
À
Im Hexadezimaleditor angezeigtes:
C3 80
UTF-8 Buchstabe des im Hexdezimaleditor angezeigtem:
À

Buchstabe:
ü
Stattdesen angezeigtes:
Ì
utf-8 Hexadezimal Code von ü
c3 bc
utf-8 Hexadezimal Code von ü würde als ISO-589-15 ergeben:
Ì
Im Hexadezimaleditor angezeigtes:
c3 8c
UTF-8 Buchstabe des im Hexdezimaleditor angezeigtem:
Ì

Was sagt mir das?

pelzig 9. Jan 2015 15:28

AW: idhttp1.get() - iSO 8859-15 - Problem - darstellung von "öÖäÄßÜü"
 
Ich habe nicht die geringste Ahnung, was dir das sagt!

Wie ersetzt man denn in einem String alle "À" durch ein "ä", wenn man keine Ahnung hat, was gerade - wie auch immer codiert - heruntergeladen wurde?

Man schaut sich an, was z.B. ein "ä" sein sollte und vergleicht es mit dem Heruntergeladenem.

Von Hinten durch die Brust ins Auge sind das - für die Deutschen Sonderzeichen - halt sieben Stringreplaces (äöüÄÖÜß).

Seit wann kann man sich beim Herunterladen einer HTML-Datei oder einer E-Mail eigentlich darauf verlassen, daß sie richtig codiert ist?

Hab' ich da was verpasst?

MfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:53 Uhr.
Seite 1 von 2  1 2      

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