Warum htmlspecialchars() den Zeichensatz mitgeben?
Alex
- php
Hallo,
weiß jemand, für was man htmlspecialchars() den Zeichensatz mitgeben kann? Bei der Umwandlung sind doch nur ASCII-Zeichen betroffen.
Folgendes Beispiel gibt auch wie erwartet "identisch!" aus:
<?php
$original_string = '<b>"Hello World!" äöüß 互联网 انټرنټ अंतरजाल ອິນເຕີເນັດ ☀ ★</b>';
$string_1 = htmlspecialchars($original_string);
$string_2 = htmlspecialchars($original_string, ENT_COMPAT, 'utf-8');
if($string_1 === $string_2) echo 'identisch!';
?>
Alex
Tach,
weiß jemand, für was man htmlspecialchars() den Zeichensatz mitgeben kann? Bei der Umwandlung sind doch nur ASCII-Zeichen betroffen.
für Zeichensätze, in denen die ASCII-Zeichen nicht in den ersten 7 Bit kodiert sind; nicht, dass mir ein solcher bekannt wäre.
mfg
Woodfighter
Hallo Jens,
für Zeichensätze, in denen die ASCII-Zeichen nicht in den ersten 7 Bit kodiert sind; [...]
OK, das klingt einleuchtend!
Alex
Hallo,
für Zeichensätze, in denen die ASCII-Zeichen nicht in den ersten 7 Bit kodiert sind; nicht, dass mir ein solcher bekannt wäre.
UTF-32 z.B. speichert ja *jedes* Zeichen mit vier Byte. Da kann es theoretisch vorkommen, dass ein einzelnes Byte genau den selben Code wie etwa die öffnende spitze Klammer in ASCII hat, obwohl es nur ein Teil des Unicode eines anderen Zeichen ist.
Gruß
echo $begrüßung;
für Zeichensätze, in denen die ASCII-Zeichen nicht in den ersten 7 Bit kodiert sind; nicht, dass mir ein solcher bekannt wäre.
Andersrum wird auch ein Schuh draus: Die gemäß ASCII-kodierten Bytewerte der HTML-eigenen Zeichen können in Multibyte-Kodierungen in Kombination mit anderen Bytes eine andere Bedeutung haben. Für die ISO-8859-Familie und UTF-8 ist das nicht der Fall, aber mindestens eine der asiatischen Kodierungen betrifft das.
echo "$verabschiedung $name";
Hallo,
Danke für Eure Antworten!
Eine Zeichensatz-Angabe sollte also nicht notwendig sein, solange man bei UTF-8 bleibt.
Alex