Inhaltsverzeichnis
Catalyst und UTF-8
Ziel: alles in UTF-8, damit es keine Probleme mit Umlauten gibt.
alles zu Catalyst und Umlaute
Siehe auch:
Probleme
Template-Toolkit (TT)
Es sind zwar alle .tt Dateien in utf-8 gespeichert und im HTML-Header steht utf-8, aber die Umlaute aus den tt-Dateien werden in Latin-1 gewandelt bevor sie ausgegbene werden.
⇒ Im Browser sind Umlaute falsch solange Encoding auf „Auto“ steht - stellt mans auf Latin-1 ist es ok.
Ursache: offenbar liest TT die Datei als iso8859-1 ein anstatt als utf-8.
Lösung
- yum install perl-Catalyst-Plugin-Unicode
- lib/Juhei.pm (Haupt-Anwendung):
use Catalyst qw/-Debug ConfigLoader Unicode Static::Simple/;
- um
Unicode
erweitern…
- Dank an: Andreas 'ac0v' Specht
weitere Tipps (noch zu bearbeiten) von Andreas 'ac0v' Specht
Template Toolkit Sachen sollen UTF-8 Konform rauskommen
z.B. in MeinCatalystTeil/View/TT.pm
package MeinCatalystTeil::View::TT; ... use base 'Catalyst::View::TT'; __PACKAGE__->config( ... ENCODING => 'utf-8', ); 1;
Datenbankzugriff
Model - also z.B. MeinCatalystTeil/Model/MeineMySQLDatenbank.pm
package MeinCatalystTeil::Model::MeineMySQLDatenbank; ... use base 'Catalyst::Model::DBIC::Schema'; __PACKAGE__->config( ..., connect_info => [ 'dbi:mysql:database=meinemysqldatenbank', 'username', 'passwort', { mysql_enable_utf8 => 1, }, ], ); 1;
Spalten müssen im Schema als UTF8 "markiert" werden
also z.B. MeinCatalystTeil/Schema/MeineMySQLDatenbank/TabelleA.pm
package MeinCatalystTeil::Schema::MeineMySQLDatenbank; use strict; use warnings; use base 'DBIx::Class'; ... __PACKAGE__->utf8_columns(qw(spalte_mit_utf8_content)); 1;
UTF8 Zeichen im Quellcode oder Codepoints mit z.B. "use charnames;"
Da wir nicht mehr in der Steinzeit leben (außer natürlich cmd unter windows) gehe ich davon aus, dass all meine Shells und meine Editoren UTF-8 können. Wenn ich schon umbedingt im Quellcode meines Programms (z.B. Controller) einen Umlaut oder ein komisches Zeichen brauche kann es nicht leiden, wenn ich z.B. statt einem einfachen „ä“ ein „LATIN SMALL LETTER A WITH DIAERESIS“ ding zusammenwurschtln muss.
⇒ wer UTF-8 Zeichen im Quellcode bvraucht sollte selbst oder im Team entscheiden, was man machen will.