Seite 2 von 2
Verfasst: 18.02.2008 19:58
von S2B
OK, dann anders... *g*
Das:
Code: Alles auswählen
function utf8_lang(&$array)
{
if (is_array($array))
{
foreach (array_keys($array) as $key)
{
utf8_lang($array[$key]);
}
}
else
{
$array = utf8_encode($array);
}
}
in die functions.php einfügen (vor "?>"). In der lang_main.php vor dem "?>":
Bedenke aber, dass das nur funktioniert, wenn du
lediglich die lang_main.php und sonst keine Sprachdatei einbindest. Ansonsten muss der Code anstatt in die lang_main.php an eine Stelle, an der alle Sprachvariablen verfügbar sind (z.B. in die init_userprefs()).
Verfasst: 18.02.2008 22:36
von gobi
Das hat funktioniert!!!! Ich bin ja ganz baff!!!
Auch wenn ich das noch garnicht richtig verstehe :
S2B hat geschrieben:
Bedenke aber, dass das nur funktioniert, wenn du lediglich die lang_main.php und sonst keine Sprachdatei einbindest. Ansonsten muss der Code anstatt in die lang_main.php an eine Stelle, an der alle Sprachvariablenverfügbar sind (z.B. in die init_userprefs()).
Wir werden sehen, ob noch Probleme auftauchen..
Vielen Dank für die Hilfe!!!
Verfasst: 19.02.2008 20:52
von S2B
Das betrifft hauptsächlich die Sprachvariablen vom ACP, diese befinden sich ja in der lang_admin.php und nicht in der lang_main.php und werden deshalb auch nicht in UTF8 umgewandelt. Wenn du jetzt allerdings den Code aus der lang_main.php zusätzlich noch in die lang_admin.php verfrachten würdest, würden die lang_main-Variablen doppelt umgewandelt werden und die Umlaute und Sonderzeichen wären futsch.
Ich würde dir also empfehlen, den Code der lang_main.php am besten gleich in die init_userprefs() (functions.php) zu verschieben, am besten gleich ganz an den Schluss der Funktion.
Verfasst: 27.02.2008 08:46
von gobi
Ic hab den von Dir beschriebenen Schritt noch nicht gemacht - man hat ja auch noch ein Privatleben....
Allerdings hat sich jetzt eins meiner Mitglieder gemeldet, in dessen Name ein Ö verkommt - und nun wirds wirklich blöd, denn er kann sich nicht einloggen und wenn ich im Adminbereich die Einstellungen ansehen will, wird er mir als nicht existent angezeigt
Frage: wersen sich solche Probleme durch deinen tip lösen oder habe ich ein grundsätzliches Problem, das man auch grundsätzlicher angehen muss?
Verfasst: 27.02.2008 15:13
von S2B
Die Seite ist UTF8, die Daten in der Datenbank hingegen ISO-8859-1. Da stößt du auch das Problem, dass phpBB2 einfach nicht dafür gemacht ist, mit UTF8 zu laufen.
Sprich: Ohne großen Aufwand ist eine komplette Umstellung auf UTF8 nicht möglich.
Verfasst: 27.02.2008 20:04
von gobi

ok - jetzt bin ich entgültig überfordert...
Das bedeutet unterm Strich was?
Update auf PHP3?
Verfasst: 27.02.2008 21:09
von S2B
phpBB3...
Wenn du UTF8 willst, wird dir über kurz oder lang nichts anderes übrig bleiben, es sei denn du kennst dich wirklich so gut aus, dass du dir das selber ins phpBB2 reinbasteln könntest...
Verfasst: 27.02.2008 22:34
von Mahony
Hallo
S2B hat geschrieben:Die Seite ist UTF8, die Daten in der Datenbank hingegen ISO-8859-1
Wenn dies so ist, dann hilft dir das hier weiter
KB:165
Um zu verstehen wie das ganze zusammenhängt, empfehle ich dir diesen Artikel (von Daniel Schlichtholz) zu lesen
Die Umlautproblematik
mysqldumper.de hat geschrieben:Jetzt kommen wir zum praktischen Teil:
Seit MySQL 4.0 benutzt MySQL intern zum Speichern von Daten utf8.
Das bedeutet aber nicht, dass Programmierer jetzt zwangsläufig alle Programme auch utf8-kodieren müssen, denn MySQL kann die Daten in jedem gewünschten Zeichensatz liefern. Wir müssen dem Server nur sagen, in welchem Format wir die Daten bekommen möchten und auch in welchem Format wir Daten liefern!
Dazu können Programme nach dem Verbindungsaufbau z.B. den Befehl "SET NAMES latin1" an den MySQL-Server senden.
Dadurch "einigen" sich das Programm und der MySQL-Server darauf, dass der Datenaustausch zwischen beiden über latin1-kodierte Daten geschieht. Werden Daten von einem Programm an den MySQL-Server gesendet, nimmt MySQL die latin1-Daten entgegen, wandelt sie intern in utf8 und speichert sie korrekt.
Fragt das Script Daten ab, dann liest MySQL die Daten aus und wandelt sie vor der Rückgabe an das Script wieder in latin1 um.
Die Kommunikation klappt also perfekt, wenn sich die beiden auf einen Zeichensatz einigen, da sie so wortwörtlich die gleiche Sprache sprechen.
Es ist also völlig egal in welcher Kodierung die Daten Server intern gespeichert werden, solange sich beide Seiten auf einen Zeichensatz einigen, da sie so wortwörtlich die gleiche Sprache sprechen.
Grüße: Mahony