hotti: Zeichen aus Codepoint erzeugen

Beitrag lesen

hi,

@ChrisB, Du warst auch interessiert,

vor einiger Zeit gabs mal ein Problem, mit pack("U0U", $codepoint); dass der Browser die Zeichen nicht richtig darstellte, da fehlten Bytes. Es lag nicht am Webserver, nicht am Browser und auch nicht am Template in der pack()-Funktion. Die Lösung lautet und hiermit nachgereicht:

Pragma utf8 und Discipline in binmode():

  
use utf8;  
binmode STDOUT, ':utf8';  
print "Content-type: text/plain; charset=UTF-8\n\n";  
print pack("U0U", 228),"\näöü\n"; # alles richtig dargestellt  

Es gibt jedoch, das soll nicht verschwiegen werden, noch andere Effekte mit Pragma utf8, z.B. wird damit das Verhalten der Funktionen length() und substr() beeinflusst; length('ä') liefert dann "1" obwohl 'ä' in utf-8 eine Länge von 2 byte hat.

Die Discipline ':utf8' gibt es nicht in Perl v5.6.1, ab wann es die gibt, müsste ich nachschauen.

Hotti