Hallo Alexander,

On Wed, Dec 14, 2005 at 11:36:40AM +0100, Alexander Scholler wrote:
>ergänzend zum Posting
>http://lists.otrs.org/pipermail/otrs-de/2005-June/003767.html
>möchte ich bzgl. UTF8-Nutzung in OTRS hinzufügen:
>
>Ich habe genau dieselbe Erfahrung gemacht wie Torsten.
>Meiner Meinung nach muss die DBI-Verbindung direkt nach dem 
>Verbindungsaufbau explizit auf utf8 eingestellt werden,
>ansonsten werden die Daten vom DB-Server in falschem Zeichensatz 
>geliefert (bei mir latin1).
>
>Das Patching von Torsten um dies zu erreichen habe ich etwas verfeinert:
>
>1) In ~/Kernel/Config.pm neuen Config-Parameter hinzufuegen:
>
>    $Self->{'DatabaseCharset'} = 'utf8'; # Zeichensatz der DB-Verbindung
>
>2) In ~/Kernel/System/DB.pm einfügen
>
>[ca. Zeile 72 => neuen Config-Parameter lesen]
>
>    $Self->{PW}   = $Param{DatabasePw} || 
>$Self->{ConfigObject}->Get('DatabasePw');
>## hinzugefuegt: DB-Zeichensatz-Konfiguration lesen
>    $Self->{Charset} = $Param{'DatabaseCharset'} || 
>$Self->{ConfigObject}->Get('DatabaseCharset')
>|| undef;
>
>    # decrypt pw (if needed)
>
>[ca. Zeile 200 => Config-Parameter nutzen]
>
>    # db connection
>    if (!($Self->{dbh} = DBI->connect("$Self->{DSN}", $Self->{USER}, 
>$Self->{PW}, $Self->{'DB::Attribute'}))) {
>        $Self->{LogObject}->Log(
>          Caller => 1,
>          Priority => 'Error',
>          Message => $DBI::errstr,
>        );
>        return;
>    }
>## hinzugefuegt: DB-Verbindungs-Zeichensatz setzen
>    if (defined $Self->{'Charset'}) {
>        if (!($Self->{dbh}->do("SET NAMES " . $Self->{'Charset'}))) {
>           $Self->{LogObject}->Log(
>              Caller => 1,
>              Priority => 'Error',
>              Message => $DBI::errstr,
>            );
>        }
>    }
>    return $Self->{dbh};
>}
>
>4) Optional kann man nun noch den neuen Config-Parameter dem WebGUI 
>SysConfig bekanntgeben durch Erweitern der 
>~/Kernel/Config/Files/Framework.xml mit
>
>    <ConfigItem Name="DatabaseCharset" Required="1" Valid="1">
>        <Description Lang="en">Default charset for DB connection. 
>"utf8" is a good choice for envirorments with many possible charsetss. 
>Specify another charset (e.g "iso-8859-1"), if only this specific 
>charset is needed.</Description>
>        <Description Lang="de">Standard-Zeichensatz der DB-Verbindung. 
>Wählen Sie "utf8", wenn verschiedene Zeichensätze für die Anzeige 
>benötigt werden. Wir nur ein Zeichensatz eingesetzt (z.B. "latin"), 
>nutzen Sie bitte diese Einstellung.</Description>1
>        <Group>Framework</Group>
>        <SubGroup>Core</SubGroup>
>        <Setting>
>            <Option SelectedID="latin1">
>                <Item Key="latin1">latin1</Item>
>                <Item Key="utf8">utf8</Item>
>        </Setting>
>    </ConfigItem>
>
>===
>
>Um nun sauber die MySQL-DB (erst ab v4.1) zur Nutzung von UTF8 zu 
>überreden, erzeugt man eine neue DB und gibt ihr als zu nutzenden 
>Zeichensatz utf8 mit:
>
>[Innerhalb eines MySQL-Clients]
>CREATE DATABASE otrs DEFAULT CHARACTER SET utf8;
>
>Anschließend kann das Dump der b isherigen otrs-DB von latin1 nach utf8 
>transformiert werden und wieder eingelesen werden:
>
>cat dump.sql | iconv  -f latin1 -t utf8 | mysql -u otrs -p otrs
>
>Sicherlich gibt es vielleicht auch Konvertierungsmechanismen innerhalb 
>der MySQL-DB, diese sind mir jedoch nicht bekannt.
>
>Ich bin kein Perl-Experte, darum bitte ich meine obigen Vorschläge 
>kritisch zu betrachten - bei mir funktioniert's so zumindest.

Jepp, mit mysql funzt dieser Ansatz. Leider aber nicht mit anderen DBs, 
weswegen wir diesen Patch nicht einbauen können :(. Im Moment gibt es 
noch Probleme mit DBD::mysql und dem Übertragen des richtigen 
Charsets..., wir hoffen das wird irgendwann geändert :).

>Gruß, Alexander

Viele Grüße,
Christian

-- 
((otrs)) :: OTRS GmbH :: Europaring 4 :: D - 94315 Straubing
  Fon: +49 (0) 9421 1862 760 :: Fax: +49 (0) 9421 1862 769
    http://www.otrs.com/ :: Communication with success!

Attachment: signature.asc
Description: Digital signature

_______________________________________________
OTRS Mailingliste: otrs-de - Webpage: http://otrs.org/
Archiv: http://lists.otrs.org/pipermail/otrs-de/
Listenabo verwalten: http://lists.otrs.org/cgi-bin/listinfo/otrs-de/
Support oder Consulting fuer Ihr OTRS System?
=> http://www.otrs.de/

Antwort per Email an