====== Catalyst und UTF-8 ======
Ziel: alles in UTF-8, damit es keine Probleme mit Umlauten gibt.
//alles zu Catalyst und Umlaute//
Siehe auch:
* http://dev.catalystframework.org/wiki/tutorialsandhowtos/Using_Unicode
====== 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.