dedlfix: htmlentities() verwendet nicht get_html_translation_table()

Beitrag lesen

echo $begrüßung;

Im Gegensatz zu get_html_translation_table() kann man htmlentities() und htmlspecialchars() einen charset-Parameter mitgeben. Der beeinflusst das Ergebnis der beiden letzten Funktionen.
ja, aber doch nicht in der Menge der bekannten Entities? Diese sollten doch in get_html_translation_table() vollständig hinterlegt sein, soweit ich die Sachlage verstehe.

Du kannst von und nach Zeichensatz X nur die Zeichen übersetzen, die in dem Zeichensatz vorkommen. ’ aka ’ gibt es in ISO-8859-1 nicht. Es ist aber Bestandteil von CP1252 aka Windows-1252 (Code: 0x92), weswegen es wohl in den in Word erstellten Texten vorkommt. Siehe http://de.wikipedia.org/wiki/ISO_8859-1.

Die Verwendung von htmlentities() produziert jedoch Entities, die ich in get_html_translation_table() nicht finde.

Du verwendest Zeichen, die in ISO-8859-1 nicht existieren. htmlentities() macht das, weil du "UTF-8" angibst, und das Zeichen darin enthalten ist. get_html_translation_table() basiert auf reinem ISO-8859-1 (also ohne CP1252), also ...

Ich nehme an, komplett auf UTF-8 zu bauen, ist keine Option für dich?
Das würde ich gerne tun, nur weiß ich nicht wie. Bei htmlentities() gebe ich UTF-8 bereits an - was kann ich noch tun?

Wofür benötigst du die Entities? XML und die diversen XML-verarbeitenden Teile PHPs arbeiten bereits mit UTF-8. Wenn du keine weitere Stringverarbeitung mit den Werten machen möchtest, sie in PHP also nur durchreichst, brauchst du im Prinzip nichts weiter zu machen, als das fertige Dokument als UTF-8-kodiert zu kennzeichnen.

[1] Meine Informationsquelle: http://cvs.php.net/viewvc.cgi/php-src/ext/standard/html.c?view=markup
[...] soweit ich den Code zu lesen vermag, scheint UTF-8 hier weitgehend mit ISO-8859-1 identisch zu sein;

Nur was den Code-Bereich 0xa0 bis 0xff angeht[2]. Es gibt noch weitere Bereiche, die sich in den ent_uni_*-Strukturen wiederfinden.

die Stein-des-Anstoßes-Entity " kommt hingegen nur bei CP-1252 vor. Leider bin ich somit verwirrter als zuvor ...

Scheint mir auch so :-) Du meinst sicher ’ - dazu siehe oben.

... dennoch vielen Dank für Deine Antwort :-)

(K)einer reicht. :-)

[2] Auf diesen Fall bezogen, ansonsten sind die ersten 256 Zeichen die gleichen wie ISO-8859-1.

echo "$verabschiedung $name";