Schrift
[thread]12708[/thread]

Drei Zeilen großes Problem



<< >> 7 Einträge, 1 Seite
gooroo175
 2008-11-02 15:26
#115898 #115898
User since
2008-11-02
3 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

Code: (dl )
1
2
3
4
#!/usr/bin/perl -W
use utf8;
print "Content-type: text/html\n\n";
print "bää";


Das hier in einer Datei im Zeichensatz utf8 führt zu einer Ausgabe im Browser bei der die Umlaute lediglich fragezeichen sind. Schreibe ich die Print-Zeilen in eine andere Datei und binde diese an der Stelle per require ein, so funktioniert die Ausgabe. Warum klappt das nicht?
Vielen Dank
GwenDragon
 2008-11-02 15:46
#115899 #115899
User since
2005-01-17
14774 Artikel
Admin1
[Homepage]
user image
Du solltest bitte auch den charset (Zeichenkodierung) im HTTP-Header angeben, wenn du was an den Browser sendest.

Code: (dl )
print "Content-type: text/html; charset=utf-8\n\n";
gooroo175
 2008-11-02 16:15
#115900 #115900
User since
2008-11-02
3 Artikel
BenutzerIn
[default_avatar]
Danke habe ich auch schon versucht nur vergessen hier im Beispiel anzugeben. Ich habe jetzt mal ein exotischeres UTF-8-Zeichen eingefügt. Dann klappt es. Entferne ich die use utf8-Anweisung klappt es auch...
merkwürdig... Scheinbar wandelt perl den String noch einmal in utf8 um oder so...
Gast Gast
 2008-11-02 16:40
#115902 #115902
"use utf8" sorgt meines Wissens dafür dass man in Variablennamen auch umlaute nutzen kann.
"use encoding 'utf8'" ist, glaube ich, eher das wonach du suchst.
gooroo175
 2008-11-02 19:05
#115904 #115904
User since
2008-11-02
3 Artikel
BenutzerIn
[default_avatar]
Mmmh, das könnte in der Tat sein. Dann dürfte aber use utf8 gar keine Auswirkung auf die Strings und deren Darstellung haben. Hat es aber...
moritz
 2008-11-02 23:17
#115907 #115907
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Gast+2008-11-02 15:40:25--
"use utf8" sorgt meines Wissens dafür dass man in Variablennamen auch umlaute nutzen kann.


Und dafür, dass Stringliterale im Quellcode automatisch als UTF-8 dekodiert werden.

Quote
"use encoding 'utf8'" ist, glaube ich, eher das wonach du suchst.


encoding.pm hat jede Menge Probleme, deswegen sollte man das nicht so empfehlen.

Ich würde eher sowas hier machen:

Code: (dl )
1
2
use utf8;
binmode STDOUT, ':encoding(UTF-8)';


Und dann alle Eingaben dekodieren.

Siehe auch diesen Artikel.
Struppi
 2008-11-03 12:41
#115909 #115909
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
wo ist eigentlich das Problem?
Wenn ich ein Perl skript im editor als utf-8 abspeichere, sind die Texte die ich nach STDOUT schicke automatisch in utf-8 kodiert, nun muss ich dem Browser nur mitteilen welche Kodierung er bekommt.
Code (perl): (dl )
1
2
3
4
5
6
#!/usr/bin/perl -w
use strict;
use CGI;

print CGI::header(-charset=>'utf-8');
print 'äöü';


Oder gibt's da irgendwelche Fallstricke die ich nicht kenne?
<< >> 7 Einträge, 1 Seite



View all threads created 2008-11-02 15:26.