Seite 1 von 1

WBB, Sonderzeichen bei Konvertierung nicht berücksichtigt

Verfasst: 03.10.2006, 16:33
von Cacator
Hi,
Ich bin von phpbb auf wbb2.3.5 umgestiegen, eigentlich hat auch alles mit den Datenbanken exportieren, konvertieren und importieren prima geklappt.

ABER ä's, ü's, ö's, scharfe ßs usw. sind nun ä, ü usw....

Meine anderen Admins und ich haben uns die Arbeit gemacht alle Benutzer richtig zu stellen und die Profile (was schon sehr lange gedauert hat), jetzt würde ich aber gerne auch noch die Themen und Beiträge ändern. Von Hand aus geht das nicht, es sind ca. 15 000, deshalb wollte ich fragen ob man über PHPmyAdmin irgend ein Script für diese Tabellen einspielen kann die alle ä mit Ä ersetzt oder so, wie gehe ich das an.

Ich möchte nicht NOCHEINMAL konvertieren.

Mit freundlichen Grüßen,
Cacator

Verfasst:
von

Re: WBB, Sonderzeichen bei Konvertierung nicht berücksichtig

Verfasst: 03.10.2006, 16:46
von haha
Cacator hat geschrieben:ABER ä's, ü's, ö's, scharfe ßs usw. sind nun ä, ü usw....
[…]
ob man über PHPmyAdmin irgend ein Script für diese Tabellen einspielen kann die alle ä mit Ä ersetzt oder so, wie gehe ich das an.
phpmyadmin ist eine Schnittstelle zu SQL, und die Fähigkeiten von SQL sind eher beschränkt, da es keine Programmiersprache ist. Mit einer echten Programmiersprache (naheliegend: PHP) bist Du besser bedient.

Dein Problem lässt sich aber möglicherweise auch anders lösen. Offenbar hat Dein altes Board Zeichen außerhalb des ASCII-Raumes mittels Unicode-Zeichentabelle und utf-8 kodiert. utf-8 benutzt für die hierzulande gebräuchlichen, zusätzlichen Schriftzeichen zwei Bytes, ältere Zeichensätze wie die iso-8859-Familie hingegen grundsätzlich nur eines.
Die merkwürdigen ä-Folgen entstehen, weil zwar utf-8-kodierter Text ausgegeben wird, dieser aber als iso-8859 gekennzeichnet ist. Statt des richtigen Buchstabens stellt Dein Browser daher die zu den zwei Bytes gehörigen zwei Zeichen aus der iso-8859-Familie dar.

Die Lösung könnte relativ simpel sein: Dem Browser die richtige Kodierung mitteilen, zum Beispiel durch Einfügen von <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> im Kopf der Seiten. Allerdings müssen dann alle Zeichen in der Seite entweder utf-8-kodiert (vernünftige Texteditoren können das) oder als HTML-Umschreibung (&auml; etc) maskiert sein.

Wenn also möglich, solltest Du die Zeichen nicht konvertiere, da Du mit Unicode auf Grund des größeren Zeichenvorrats besser fährst.

Verfasst: 03.10.2006, 16:50
von Cacator
Thx erstmal
Jetzt geht ja das Forum richtig, nur die übernommen Beiträge sind falsch!
Okay das ganze hat aber noch ein Problem, es sind praktisch 2 Foren zusammengeführt worden zu einem. Das heißt ein kleiner Teil ist richtig, ein großteil falsch :crazyeyes:

Gibt es eine Möglichkeit alles richtig setzen. Sonst vielleicht bei der Ausgabe einfach mit string replace alle Umändern? Oder ich suche praktisch ein Script das alle komischen Zeichen in richtige umwandelt.

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 03.10.2006, 17:04
von haha
Cacator hat geschrieben:Das heißt ein kleiner Teil ist richtig, ein großteil falsch :crazyeyes:

Gibt es eine Möglichkeit alles richtig setzen.
Dann musst Du per Programm alle Datenbankeinträge auslesen, prüfen, ob die Kodierung passt und, falls nicht, die Kodierung ändern.

PHP hat einige Funktionen eingebaut, zur Umwandlung nach utf-8 hilft utf8_encode(), in die andere Richtung hilft utf8_decode(). Ist die iconv-Bibliothek in Eurem PHP verfügbar, bietet sich eher iconv() an, weil man da den Zeichensatz angeben kann. Da utf8_en-/decode() vermutlich auf iso-8859-1 aufsetzt, gehen bei der Konvertierung einige Zeichen (einige Anführungszeichen, Eurozeichen, möglicherweise noch mehr) verloren, falls statt iso-8859-1 tatsächlich windows-1252 (erweitertes iso-8859-1) vorliegt.

Zur Zeichensatzerkennung kann man mb_detect_encoding() benutzen, sofern vorhanden. Ansonsten: preg_match(), das Muster habe ich jetzt gerade nicht zur Hand.
Sonst vielleicht bei der Ausgabe einfach mit string replace alle Umändern?
Ist nicht einfacher und löst vor allen Dingen nicht die Ursache.

Verfasst: 03.10.2006, 17:19
von Cacator
Okay das hilft mir erstmal weiter danke.
Eine Frage noch in der Datenbank sind ja jetzt ä und ä. Wenn ich die mit hilfe eines Befehls en oder decode, werden dann alle ä zu ä, und die ä bleiben?
Brauch ich für mein WBB jetzt utf8 oder etwas anderes?

Verfasst: 03.10.2006, 22:44
von haha
Cacator hat geschrieben:Wenn ich die mit hilfe eines Befehls en oder decode, werden dann alle ä zu ä, und die ä bleiben?
Du solltest vor der Konvertierung schon prüfen, wie die Zeichen kodiert sind - daher mein Hinweis auf mb_detect_encoding() bzw. preg_match().
Brauch ich für mein WBB jetzt utf8 oder etwas anderes?
Unicode ist wegen der universelleren Einsetzbarkeit im Allgemeinen zu bevorzugen. Probiere erstmal, was passiert, wenn Du die Seiten als utf-8 markierst (siehe oben, <meta>). Geht mit den Beiträgen (!), jenen die derzeit mit merkwürdigen Zwei-Byte-Kombinationen erscheinen und neuen, dann alles glatt, konvertiere in utf-8. Besondere Zeichen im HTML-Code der Seiten bzw. der Skripte müssen separat vorbereitet werden (so nicht schon geschehen), am Besten mit HTML-Maskierungen.

Verfasst: 03.10.2006, 23:00
von Airport1
Du kannst theoretisch auch die alten Inhalte in der DB einfach so belassen wie sie jetzt sind, also mit den "kaputten Umlauten" (diese Fehlerquelle kenn ich seit den 80ern nur zu gut) und beim Auslesen aber vor dem Ausgeben (!) ein utf8_decode drueber, das reicht i.d.R. bzw in den meisten Faellen schon.

> Mit einer echten Programmiersprache (naheliegend: PHP)
Naja, so "echt" ist die nicht ;)

Verfasst: 04.10.2006, 16:47
von Cacator
Danke euch 2 ;)
Werde jetzt mal das mit utf-8 usw. testen.

@Airport1:
Kann mir vorstellen dass das ganze aber zu Bugs usw. führen kann da ja das ursprüngliche Problem wie haha gesagt hat nicht behoben wird. Außerdem stelle ich mir das etwas komplizierter vor.

Werde auch noch probieren ein Script suchen der einfach alle Felter EINHEITLICH in utf-8 umwandelt, sollte es doch eigentlich geben.


EDIT: Hm also mit Metatags habe ich bis jetzt rein gar nichts erreicht, habe auch
<meta http-equiv="Content-Type" content="text/html; 8: charset=iso-8859-1"> probiert.

Hm nochmal EDIT, wenn wer Lust hat, ich zahle demjenigen 25 Euro, dem ich schnell eine exportierte Datenbank schicke, der sie richtig stellt und mir wieder zurückschickt.

Verfasst: 05.10.2006, 14:47
von Cacator
niemand interesse^^ sry für push, aber das Angebot war vorher noch nicht.