Entitäten rückübersetzen
Tom
- php
0 Fabian St.0 Tom0 Axel Richter0 Axel Richter
Hello,
ich beschäftige mich immer noch mit einem Werkzeug für das Rückübersetzen von HTML-Seiten bzw. extrahieren der Daten daraus.
Dabei gibt es immer wieder Problemchen mit http://de.php.net/manual/de/function.html-entity-decode.php
Nicht zürückübersetzt wird das
€
'
und andere. (fallen mir eben gerade nicht ein)
Woran liegts?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom!
ich beschäftige mich immer noch mit einem Werkzeug für das Rückübersetzen von HTML-Seiten bzw. extrahieren der Daten daraus.
Dabei gibt es immer wieder Problemchen mit http://de.php.net/manual/de/function.html-entity-decode.php
Nicht zürückübersetzt wird das
€
'und andere. (fallen mir eben gerade nicht ein)
Woran liegts?
Wahrscheinlich wirst du das eh schon überprüft haben, aber trotzdem:
Hast du als drittes Argument den richtigen Zeichensatz übergeben? Defaultmäßig wird ja ISO-8859-1 verwendet, indem z.B. das Eurozeichen fehlt.
Grüße,
Fabian St.
Hello,
Dabei gibt es immer wieder Problemchen mit http://de.php.net/manual/de/function.html-entity-decode.php
Hast du als drittes Argument den richtigen Zeichensatz übergeben? Defaultmäßig wird ja ISO-8859-1 verwendet, indem z.B. das Eurozeichen fehlt.
Nein. Das hatte ich noch nicht überprüft, da der Zeichensatz der Seiten i.d.R. nicht angegeben ist. Dir Browser übersetzen aber € trotzdem zu € (Euro-Zeichen). Scheint sich dann ja wohl auch um eine Art "Quirx-Mode" zu handeln
Ich suche jetzt gleich erstmal (im Tal) meine Notizen zusammen über alle Zeichen, die nicht rückübersetzt werden. Aber ich denke, dass Du Recht hast. Danke für den Tipp.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
http://de.php.net/manual/de/function.html-entity-decode.php
Hast du als drittes Argument den richtigen Zeichensatz übergeben? Defaultmäßig wird ja ISO-8859-1 verwendet, indem z.B. das Eurozeichen fehlt.
Nein. Das hatte ich noch nicht überprüft, da der Zeichensatz der Seiten i.d.R. nicht angegeben ist. Dir Browser übersetzen aber € trotzdem zu € (Euro-Zeichen). Scheint sich dann ja wohl auch um eine Art "Quirx-Mode" zu handeln
Jain ;-)). Die Entity € _ist_ Unicode.
Der Browser geht so vor:
Alle nicht Entity-Zeichen werden aus Byte-Code in das charset gemapt, welches für das Dokument angegeben ist. Für ISO-8850-1 gibt es dort genau diese http://www.fileformat.info/info/charset/ISO-8859-1/grid.htm map. In ISO-charsets hat _jedes_ Zeichen 8 bit. Es kann also nur 256 unterschiedliche Zeichen geben. Weitere Zeichen finden sich in _andern_ maps (ISO-8859-2, ISO-8859-3 ...). Nur charset=UTF-8 enthält alle Zeichen in einer map. Hier kann ein Zeichen aber unterschiedlich viele Octets belegen. http://www.faqs.org/rfcs/rfc2279.html
Entitys werden grundsätzlich in Unicode gemapt. Gibt es einen Font, der unter € = € = Unicode \u20AC ein Zeichen gemapt hat, dann wird dieses angezeigt.
Die PHP Funktion mapt nur gegen das angegebene charset. Gibt es das Zeichen dort nicht, dann kann es nicht umgewandelt werden. Nur gegen charset=UTF-8 können alle Zeichen umgewandelt werden.
viele Grüße
Axel
Hallo,
Die PHP Funktion mapt nur gegen das angegebene charset. Gibt es das Zeichen dort nicht, dann kann es nicht umgewandelt werden.
Also können alle Entities � - ÿ in ISO-charsets umgewandelt werden. Alle Entities > ÿ können nur in UTF-charsets umgewandelt werden.
viele Grüße
Axel
Hello Axel,
Die PHP Funktion mapt nur gegen das angegebene charset. Gibt es das Zeichen dort nicht, dann kann es nicht umgewandelt werden.
Also können alle Entities � - ÿ in ISO-charsets umgewandelt werden. Alle Entities > ÿ können nur in UTF-charsets umgewandelt werden.
Danke. (79 Ausrufezeichen)
Das werde ich nochmal verinnerlichen.
-----
Da ich momentan ein Engagement als Zehntausendsassa zum Hungerlohn habe (es aber mal eine Weile durchhalten will, ganz nach dem Motto von Wallraff) kann ich mich leider immer nur 30sec am Tag mit jedem einzelnen Thema beschäftigen. Spätestens dann kommt die Frage "haben Sie eigentlich das... schon fertig?" und spätestens 30sec später dann die Aussage "jetzt verdienen wir erstmal damit ... unser Geld"
Und abends bleibt mir dann gerade die Zeit, den SPAM aus den emails zu löschen, diese zu lesen und zu beantworten und meine Tageserlebnisse aufzuschreiben.
Aber was tut man nicht alles, um "seinem" Anwalt die Untreue nachweisen zu können.
Das nur für diejenigen, die mich hier schon länger kennen und sich sicher teilweise wundern, wieso die Antwortqualität so abgenommen hat :-((
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi,
Also können alle Entities � - ÿ in ISO-charsets umgewandelt werden. Alle Entities > ÿ können nur in UTF-charsets umgewandelt werden.
Nein.
Die numerischen Zeichenreferenzen in HTML (SGML) beziehen sich IMMER auf Unicode.
Denn wenn es so wäre, daß alle Entities von � bis ÿ in ISO-8859-x charsets umgewandelt werden könnten, wären alle ISO-8859-x charsets identisch, da sie ja alle die Unicode-Zeichen 0 bis 255 enthielten.
Die in den verschiedenen ISO-charsets enthaltenen Zeichen sind aber nicht immer die Zeichen, die im Unicode die Codes 0 bis 255 haben.
Z.B. sind die in ISO-8859-5 enthaltenen kyrillischen Zeichen im Unicode ab Code 1024 zu finden.
z.B. Zeichen Б (Б) läßt sich in ISO-8859-5 codieren (es hat dort den Code 177, wenn ich das richtig sehe),
z.B. Zeichen ± (±) läßt sich in ISO-8859-5 nicht darstellen.
Außerdem sind in HTML einige der Zeichen mit Unicodes zwischen 0 und 255 gar nicht zulässig (z.B.  bis Ÿ).
Es ist so, daß aus dem gesamten Unicode-Bereich eine Teilmenge von max. 256 Zeichen in eine ISO-8859-x Kodierung überführt werden kann.
Welche Teilmenge das ist, hängt von der konkreten ISO-8859-x ab.
AFAIR sind auch noch die ersten 128 Zeichen der ISO-8859-x Charsets jeweils identisch (nämlich mit den Zeichen 0 bis 128 des Unicodes, die wiederum 7-Bit-ASCII entsprechen).
cu,
Andreas
Hallo,
Die numerischen Zeichenreferenzen in HTML (SGML) beziehen sich IMMER auf Unicode.
Das schrieb ich auch so.
Denn wenn es so wäre, daß alle Entities von � bis ÿ in ISO-8859-x charsets umgewandelt werden könnten,
Es _ist_ aber so, dass alle Entities von � bis ÿ in ISO-8859-x charsets umgewandelt werden können, sogar in _ein_ ISO-8859-x charset, nämlich ISO-8859-1 ;-)).
wären alle ISO-8859-x charsets identisch, da sie ja alle die Unicode-Zeichen 0 bis 255 enthielten.
Ich habe nicht geschrieben, dass die Zeichen aller ISO-8859-x charsets in � - ÿ umgewandelt werden können ;-).
Die in den verschiedenen ISO-charsets enthaltenen Zeichen sind aber nicht immer die Zeichen, die im Unicode die Codes 0 bis 255 haben.
Ja. Mein Schluss, dass _nur_ die Entities von � bis ÿ in ISO-8859-x charsets umgewandelt werden können ist falsch. Es können viel mehr Entities umgewandelt werden, aber _nur_ die Entities von � bis ÿ in ISO-8859-1.
AFAIR sind auch noch die ersten 128 Zeichen der ISO-8859-x Charsets jeweils identisch (nämlich mit den Zeichen 0 bis 128 des Unicodes, die wiederum 7-Bit-ASCII entsprechen).
Ja.
viele Grüße
Axel