Archiv verlassen und diese Seite im Standarddesign anzeigen : UTF-8 Probleme nach 3.6 Update
Hi!
Meine DB läuft mit UTF-8 Zeichensatz.
Nachdem Update von 3.5 auf 3.6 kamen ja zusätzliche Phrases dazu. Bei denen endeten die Phrasen immer genau dort wo der Umlaut begann.
Also ist beim Import das Forum über die Umlaute gestolpert und hat dann die Wörter zerstückelt hochgeladen (ich habe nochmal direkt in der DB nachgeschaut und dort ist es genauso.. Aus Anhänge z.B. wird Anh)
Mein nächster Schritt war dann in der Language.xml das Encoding von Iso auf Utf8 zu setzen, der Upload brachte allerdings auch nichts.
Danach habe ich versucht die XML in Unicode zu verwandeln mit Ultraedit, was zwar klappte, aber beim Upload der Sprachdatei immernoch keinen positiven Effekt brachte.
Nun habe ich schon xyz Kombinationen ausprobiert, aber ich bekomme die Languagefile einfach nicht so importiert, dass sie auf meinem Server die Umlaute anzeigt. Jedes Wort aus den Phrases, dass einen Umlaut beinhaltet ist im Eimer. :(
Das nervige daran ist, dass ich das Problem schonmal hatte, als ich auf den Server mit der UTF8 DB gezogen bin, aber wie ich es damals lösen konnte ist mir nun schleierhaft.
Vielleicht hat ja jemand einen Tipp.
Danke :)
ok,. hat sich nun doch erledigt :)
Vielleicht hast du nun, für Leute mit einem ähnlichen Problem, einen Tipp :)
SuperSaiyajin
16.08.2006, 21:31
Ja, wäre schön, wenn du sagen könntest wie du das Problem gelöst hast. Ich hab nämlich das selbe Problem und das Forum ist so einfach nicht benutzbar :(
thomaso66
18.08.2006, 00:45
Also ich habe dieses Problem so gelöst.
DB UTF-8
Config UTF-8
Language.xml exportiert mit http://www.pspad.com/de/ auf UTF-8 umgestellt speichern....
Language.xml wieder in VB importiert
Fertig...
So stimmte die Datenbank und die Ausgabe im Front und Backend bei mir...vieleicht hilft es ja jemandem.
Also ich habe die vbulletin-language.xml in einem XML-Editor auf UTF-8 umgewandelt und als eigene Sprache hochgeladen.
Bei Verwendung dieser Sprache werden die Umlaute aber nicht richtig dargestellt.
Hat jemand einen Tipp ?
Versionen:
vBulletin 3.6.1
PHP5.1.5
SuperSaiyajin
20.09.2006, 17:28
Bei mir lag der Fehler einfach darin, dass die Sprache nicht auf UTF-8 gestellt war so wie der Rest.
Sprachen verwalten -> Einstellungen ändern -> HTML-Zeichensatz auf UTF-8 stellen
Dann "sollte" es funktionieren.
Den HTML-Zeichensatz hatte ich auf UTF-8 gesetzt, bei Ansicht des Quellcodes der Seite wird auch dies auch richtig angewandt (charset=UTF-8).
Trotzdem werden die Umlaute nicht richtig dargestellt ...
Hellraider
20.09.2006, 18:29
Hast du auch im Browser die richtige Zeichencodierung eingestellt?
Werden die Phrasen falsch angezeigt oder deine Themen, Beiträge, Forennamen etc.?
Hast du auch im Browser die richtige Zeichencodierung eingestellt?
Im Browser ist die Codierung auf UTF-8 eingestellt.
Werden die Phrasen falsch angezeigt oder deine Themen, Beiträge, Forennamen etc.?
Die Phrasen werden falsch angezeigt. Die unter Version 3.5.4 mit Zeichensatz UTF-8 geschriebenen Beiträge werden richtig dargestellt.
Also noch eine Information zu meinem Zeichensatz-Problem:
Ich habe die vbulletin-language.xml im XML-Editor auf UTF-8 umgewandelt und als eigene Sprache hochgeladen.
Der Vergleich der Phrasen dieser UTF-8-Sprache mit der MASTER-LANGUAGE zeigt, dass sie beide in ISO-8859-1 abgespeichert sind.
Wie kann ich vBulletin dazu bringen, die Sprach-xml-Datei in encoding="UTF-8" hochzuladen?
Hast du es genauso gemacht, wie er?
http://www.vbulletin-germany.com/forum/showpost.php?p=155698&postcount=5
Also auch UTF-8 in der Datenbank und der config.php eingestellt?
Hast du es genauso gemacht, wie er?
http://www.vbulletin-germany.com/forum/showpost.php?p=155698&postcount=5
Also auch UTF-8 in der Datenbank und der config.php eingestellt?
Die MySQL-Datenbank wurde mit Zeichensatz latin1 erstellt und dementsprechend habe ich auch die Standardeinstellung in der config.php nicht geändert, also "$config['Mysqli']['charset'] = 'utf8';" auskommentiert gelassen.
Bis jetzt war dies auch kein Problem, ich konnte Sprachen-XML-Files mit Zeichensatz UTF-8 hochladen und diese wurden auch richtig dargestellt.
Allerdings habe ich von PHP 4.4.2 auf PHP 5.1.5 umgestellt. Vielleicht liegt das Problem in den unterschiedlichen Default-Einstellungen für die Funktion xml_parser_create() zw. PHP4 und PHP5 ?
Vielleicht liegt das Problem in den unterschiedlichen Default-Einstellungen für die Funktion xml_parser_create() zw. PHP4 und PHP5 ?
Ich habe es ausprobiert: Wieder auf PHP4.4.2 umgestellt und die UTF-8-Sprach-XML-Datei hochgeladen. Ergebnis: Phrasen werden richtig dargestellt (allerdings nicht die Namen von Phrasentypen, diese dürften nicht über vbulletin-language.xml hochgeladen werden ?).
Das kann aber keine endgültige Lösung sein, immer auf PHP4 umzustellen, um Sprachdateien in anderen Zeichensätzen als ISO-8859-1 hochzuladen ....
Danke für die Tipps.
Habe es jetzt endlich hinbekommen. :)
(dachte schon ich müsste auf v3.5 sitzen bleiben ;) )
Ich habe eine weitere Möglichkeit gefunden, eine UTF-8-XML-Sprachdatei auch unter PHP5 hochzuladen. Leider muss man dazu in den PHP-Code eingreifen:
im File includes/class_xml.php, function &parse:
Encoding-Parameter von ISO-8859-1 auf UTF-8 ändern
Dadurch verwendet die PHP-Funktion xml_parser_create als Output UTF-8
Es wäre schön, wenn es in vBulletin eine Option geben würde, mit der man bestimmen kann, im welchem Zeichensatz xml-Dateien hochgeladen werden sollen.
Schließlich sollte auch die MasterLanguage denselben Zeichensatz haben wie die als Standardsprache definierte 'Übersetzung'. Denn nach ein paar Upgrades ist die Übersetzung nicht mehr vollständig und es werden Phrasen der MasterLanguage dargestellt.
Kann mir das vBulletin-Entwicklerteam dazu eine Perspektive geben?
Das ist ein generelles Problem. Wenn Du die Datenbank für vbulletin unter Mysql < 4.1 erstellt hast, wird der Zeichensatz latin_swedish und iso 8859-1 verwendet. Wenn Du später mysql in der Version 4.1 oder größer verwendest, ist der Standardzeichensatz utf-8. Dann kann es vorkommen, dass die DB die Zeichensätze nicht korrekt ausliefert.
Meiner Erinnerung nach gibt es Tools oder Tips bei mysql.com, wie man eine iso-88591-DB nach utf-8 konvertiert.
Das ist ein generelles Problem. Wenn Du die Datenbank für vbulletin unter Mysql < 4.1 erstellt hast, wird der Zeichensatz latin_swedish und iso 8859-1 verwendet. Wenn Du später mysql in der Version 4.1 oder größer verwendest, ist der Standardzeichensatz utf-8. Dann kann es vorkommen, dass die DB die Zeichensätze nicht korrekt ausliefert.
Meiner Erinnerung nach gibt es Tools oder Tips bei mysql.com, wie man eine iso-88591-DB nach utf-8 konvertiert.
Die Datenbank-Version ist nicht das Problem, denn die war von Anfang an 4.1.14.
aim, kannst du evtl. einen entsprechenden Vorschlag bei vBulletin.com posten?
http://www.vbulletin.com/forum/forumdisplay.php?f=55
Die einze Lösung meines Problems bekomme ich so hin:
Ich öffne die deutsche SprachXML in Ultraedit
gehe dann auf
Datei > konvertieren > Unicode/ASCII/UTF8 nach UTF8 (ASCII bearbeitung)
Das hat zur Folge, dass alle Umlaute dann in der XML "falsch dargestellt" werden, aber beim Import ins Vbulletin es dann richtig ist.
Die ISO Angabe zu Anfang der XML lasse ich so wie sie ist.
Ist zwar alles etwas merkwürdig, aber so klappt es jedesmal bei mir.
Die einze Lösung meines Problems bekomme ich so hin:
Ich öffne die deutsche SprachXML in Ultraedit
gehe dann auf
Datei > konvertieren > Unicode/ASCII/UTF8 nach UTF8 (ASCII bearbeitung)
Das hat zur Folge, dass alle Umlaute dann in der XML "falsch dargestellt" werden, aber beim Import ins Vbulletin es dann richtig ist.
Die ISO Angabe zu Anfang der XML lasse ich so wie sie ist.
Ist zwar alles etwas merkwürdig, aber so klappt es jedesmal bei mir.
Das funktioniert deswegen, weil im vBulletin-PHP-Code bei der Funktion xml_parser_create() der Output-Encoding-Parameter auf ISO-8859-1 gesetzt ist. Ab PHP5 wird dieser berücksichtigt. Weil in der ersten Zeile des xml-File ISO-8859-1 steht, wird der Inhalt des xml-File nicht umgewandelt und der UTF-8 kodierte Text beim Import in die DB belassen wie er ist. Dieses Problem kann man daher wie oben beschrieben 'austricksen'.
Allerdings wird an vielen Stellen im vBulletin-PHP-Code der charset hardcoded auf ISO-8859-1 gesetzt und Daten in die Datenbank geladen. So zB die Phrasentypen. Diese werden dann verstümmelt dargestellt.
Super, also hilft der Trick mit dem umwandeln der XML-Datei nicht.
Wie soll ichs denn nun sonst machen?
Momentan läuft das bei mir grundsätzlich nicht mit den Umlauten. :(
Habe auch versucht, die Spracheinstellungen vorzunehmen, hat aber keinen Unterschied gemacht. Werde das auch nicht tun, wenn im Code hardgecodete nicht-UTF-8 Dinge drinstehen.
Bitte dringend um Lösung... :) Danke im Voraus.
Konfi hier:
MySQL 4.1 (UTF-8)
PHP 5
vB 3.6.4
Gerade frisch installiert. Überall Umlaute durch "?" ersetzt zu sehen.
Bei meiner letzten vBulletin-Installation habe ich nur die Sprach-xml-Dateien auf UTF-8 umgewandelt + in der 1. Zeile auf encoding="ISO-8859-1" geändert. Die Einstellung HTML-Zeichensatz bei der Sprache habe ich auf UTF-8 gesetzt.
Alle anderen xml-Dateien habe ich belassen wie sie sind, da ich bei Experimenten, diese Dateien auch auf UTF-8 umzuwandeln, insbesondere beim adminhelp, mit dem Fehler MySQL-Fehler : Illegal mix of collations gescheitert bin.
Ich hoffe, dass vBulletin zukünftig eine saubere Lösung anbietet.
Bei meiner letzten vBulletin-Installation habe ich nur die Sprach-xml-Dateien auf UTF-8 umgewandelt + in der 1. Zeile auf encoding="ISO-8859-1" geändert. Die Einstellung HTML-Zeichensatz bei der Sprache habe ich auf UTF-8 gesetzt.
Alle anderen xml-Dateien habe ich belassen wie sie sind, da ich bei Experimenten, diese Dateien auch auf UTF-8 umzuwandeln, insbesondere beim adminhelp, mit dem Fehler MySQL-Fehler : Illegal mix of collations gescheitert bin.
Ich hoffe, dass vBulletin zukünftig eine saubere Lösung anbietet.
Vielen Dank für deinen Hinweis. Ich hab das und das und das von weiter oben zunächst nochmal mit Nachdenken, dann ohne Nachdenken und dann nur noch per Fire und Forget in allen zufälligen Varianten probiert.
Jetzt läufts. Ich habe keine Ahnung warum. Ich weiss aber sehr sicher, dass die Einstellungen von jetzt bereits mehrfach vorher probiert wurden aber nicht funzten.
Ja, da sollte eine saubere Lösung her. Da ich kein Neuuser bin, sondern schon ein vB hatte, hat mich das jetzt nur ein wenig geärgert, weil ich weiss, wie gut vB ist, wenn es rennt. Aber ein echter Neukunde dürfte sich sehr ärgern. Vermute ich mal. ;)
Bleibt nur die alte Programmiererweisheit: Egal, hauptsache es läuft! :D Oha...
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.