Einzelnen Beitrag anzeigen
  #38 (permalink)  
Alt 12.02.2005, 05:52
Benutzerbild von toscho
toscho toscho ist offline
Perplexifikator
XHTMLforum-Kenner
 
Registriert seit: 22.05.2004
Ort: Halle/Saale
Beiträge: 1.565
toscho sorgt für eine eindrucksvolle Atmosphäretoscho sorgt für eine eindrucksvolle Atmosphäre
Standard

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($u4"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
__________________
toscho.de
Mit Zitat antworten