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!
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/