Zitat:
Zitat von ulle
Ich dachte mit der Codierung &#....; schalte ich in jedem Fall in UTF-8 Zeichen. Schliesslich kann ich doch auch alle Zeichen über diesen Weg in ISO-8859-1 anzeigen lassen.
|
Ich weiß nicht, was du mit »schalten« meinst, aber die dezimalen Referenzen bestehen nur aus ASCII-Zeichen, sind also sowahl mit ISO-8859-1 als auch mit UTF-8 kompatibel.
In echtem UTF-8 schreibst du statt der Referenz die Code-Position des Zeichens selbst ins Dokument. Sieh es dir mal in einem Hexeditor an.
Zitat:
Ich habe da mal ein kleines PHP-Script gebastelt …
|
Dein erstes »echo« ist überflüssig; du kannst an der Stelle einfach den PHP-Code unterbrechen und das HTML pur ausgeben.
Hier mal eine Kurzvariante des Scriptes, mit dem ich die Unicode-Panels erzeugt habe. Vielleicht hellt das ein wenig auf.
PHP-Code:
<?php
header ("Content-Type: text/html;charset=utf-8");
function unicode_to_utf8($str) {
/* Wandelt die Dezimalvariante eines Unicode-Wertes in
* das entsprechende Zeichen um. Nach:
* [url]http://www.randomchaos.com/document.php?source=php_and_unicode[/url]
*/
$utf8 = '';
if ($str < 128) {
$utf8.= chr($str);
} elseif ($str < 2048) {
$utf8.= chr(192 + (($str - ($str % 64)) / 64));
$utf8.= chr(128 + ($str % 64));
} else {
$utf8.= chr(224 + (($str - ($str % 4096)) / 4096));
$utf8.= chr(128 + ((($str % 4096) - ($str % 64)) / 64));
$utf8.= chr(128 + ($str % 64));
}
return $utf8;
}
function count_up ($title, $minhex, $maxhex) {
/* Erstellt eine Unicodetabelle von $minhex bis $maxhex. */
$pre = '<td><input value="';
$code = '<table><caption>'.$title.'</caption>'."\n".'<tr><th>Char<th>Hex<th>Dec';
/* make it countable */
$i = hexdec($minhex);
$k = hexdec($maxhex);
while($i <= $k) {
$u = strtoupper(dechex($i));
$u = str_pad($u, 4, "0", STR_PAD_LEFT);
$pur = unicode_to_utf8($i);
$code .= "\n".'<tr>'.$pre.$pur.'">'.$pre.$u.'">'.$pre.$i.'">';
$i++;
}
$code .= '</table>' . "\n";
return $code;
}
/* Um sich die Währungszeichen anzeigen zu lassen, ruft man dies auf: */
echo count_up ('Currency Symbols', '20A0', '20B1');
?>
Wie üblich gebricht es meinem Code an Eleganz, aber wenn du die verwendeten Funktionen und den Link nachschlägst, sollte er verständlich sein. Hoffe ich.
Gruß
Thomas