Page 1 of 3
[geloest] Probleme mit Zeichen-Kodierung
Posted: Sat Jun 07, 2008 10:24 am
by mm231
Hallo zusammen,
auf meiner Website
www.monkfan.de stehen teilweise Begriffe oder Sätze in tschechisch (z.B.
http://monkfan.de/s01e06 unter "Weitere Titel"). Das Problem ist, dass bestimmte Buchstaben nur als Fragezeichen angezeigt werden. Woran liegt das? Ich nutze tinyMCE. Gebe ich dort den Ausdruck ein, sieht er sowohl im WYSIWYG als auch im Quellcode normal aus. Speichere ich, werden statt einigen Buchstaben Fragezeichen angezeigt. Gebe ich den Ausdruck direkt in der DB ein, erscheint die Meldung:
Warning: #1366 Incorrect string value: '\xC5\x99sk\xC3\xBD...' for column 'content' at row 1
Ich habe alles auf UTF-8 umgestellt (auch in der include.php) und auch die Servervariablen stimmen:
character set client utf8
character set connection utf8
Das einzige was nicht als UTF-8 deklariert ist, ist die Kollation der Tabellen (latin1_general_ci). Ist das das Problem? Wenn ja, kann ich die Kollation einfach ändern?
Achaja, ich nutze CMSMS 1.2.5.
Re: Probleme mit Zeichen-Kodierung
Posted: Sat Jun 07, 2008 11:00 am
by mike-r
Um welche Buchstaben handelt es sich denn?
Ich hab auf Verdacht in einer Installation ein "miliardář" (kann kein Tschechisch, und weiss nicht, was Du da genau stehen hast ) mit Tiny getestet: läuft prima.
In der DB steht bei meinen Tabellen ein Kollation: latin1_swedish_ci, sollte also mit general theoretisch genauso wenig Probleme machen können...
Re: Probleme mit Zeichen-Kodierung
Posted: Sat Jun 07, 2008 11:04 am
by mm231
miliardářský lupič müsste da statt miliardá?ský lupi? stehen.
Re: Probleme mit Zeichen-Kodierung
Posted: Mon Jun 09, 2008 8:17 am
by cyberman
mm231 wrote:
Das Problem ist, dass bestimmte Buchstaben nur als Fragezeichen angezeigt werden. Woran liegt das?
Fragezeichen werden immer dann angezeigt, wenn der Browser ein Zeichen erkennt, was mit dem aktuellen Charset nicht dargestellt werden kann.
Ich habe alles auf UTF-8 umgestellt (auch in der include.php) und auch die Servervariablen stimmen:
character set client utf8
character set connection utf8
Ist eigentlich nur in der config.php erforderlich ...
Code: Select all
$config['default_encoding'] = 'utf-8';
$config['admin_encoding'] = 'utf-8';
Bei dir muss irgend wo noch ein Problem stecken. Verwendest du ein Modul für den Episodenguide?
Hab das Wort gleich mal getestet - hier ohne Probleme.
http://test.cmsmadesimple.de/index.php?page=tschechisch
Das einzige was nicht als UTF-8 deklariert ist, ist die Kollation der Tabellen (latin1_general_ci). Ist das das Problem?
Die Kollation der DB-Tabellen hat nix mit der Anzeige zu tun.
Re: Probleme mit Zeichen-Kodierung
Posted: Mon Jun 09, 2008 11:10 am
by mm231
cyberman wrote:
Ist eigentlich nur in der config.php erforderlich ...
Code: Select all
$config['default_encoding'] = 'utf-8';
$config['admin_encoding'] = 'utf-8';
default_encoding war leer, ich habe nun utf-8 eingetragen (obwohl dort ja steht, wenn die Angabe leer bleibt, utf-8 verwendet wird), Problem bleibt aber.
Bei dir muss irgend wo noch ein Problem stecken. Verwendest du ein Modul für den Episodenguide?
Nein, kein Modul. Das sind Einzelseiten (also pro Episode eine Seite).
Re: Probleme mit Zeichen-Kodierung
Posted: Mon Jun 09, 2008 11:36 am
by cyberman
Und wo holst du die Übersetzung her? Via Copy & Paste?
mm231 wrote:
miliardářský lupič
Und was steht hier bei dir im html Source?
Re: Probleme mit Zeichen-Kodierung
Posted: Mon Jun 09, 2008 11:48 am
by Wiedmann
Das einzige was nicht als UTF-8 deklariert ist, ist die Kollation der Tabellen (latin1_general_ci). Ist das das Problem?
Yup.
Wenn ja, kann ich die Kollation einfach ändern?
Jein. Einfaches Ändern geht nicht, aber evtl. korrigieren. Das kommt jetzt ganz auf die "Vorgeschichte" der DB ab, sprich:Was du genau in der "include.php" geändert hast. Und wann (gab es davor und danach Einträge in die DB?)?
Re: Probleme mit Zeichen-Kodierung
Posted: Mon Jun 09, 2008 3:37 pm
by mm231
cyberman wrote:
Und wo holst du die Übersetzung her? Via Copy & Paste?
Copy/Paste.
Und was steht hier bei dir im html Source?
Wo "hier?"
Jein. Einfaches Ändern geht nicht, aber evtl. korrigieren. Das kommt jetzt ganz auf die "Vorgeschichte" der DB ab, sprich:Was du genau in der "include.php" geändert hast. Und wann (gab es davor und danach Einträge in die DB?)?
Ich habe die // in der Zeile $cmsdb->Execute('set names utf8'); entfernt. Anschließend waren z.B. Umlaute und Sonderzeichen unleserlich (das war mir aber vorher klar, daher habe ich das anschließend mit einem Tool direkt in der DB korrigiert). Das Einzige, was nicht korrigiert wurde und auch manuell nicht funktioniert sind eingie der tschech. Buchstaben.
Re: Probleme mit Zeichen-Kodierung
Posted: Mon Jun 09, 2008 4:04 pm
by Wiedmann
Ich habe die // in der Zeile $cmsdb->Execute('set names utf8'); entfernt.
Im Prinzip ist das "unnötig". Ausser natürlich, man möchte den Contentinhalt auch z.B. direkt mit phpMyAdmin bearbeiten. (CMSMS hat keine Ahnung von Unicode fähigen Datenbanken)
(Allerdings solte dieser Aufruf normal schon in der "adodb.functions.php" erfolgen (in adodb_connect) und um 'utf8' gehören eigentlich ein paar Quotes.)
Wenn man diesen Eintrag aktiviert, muss auch wirklich jede Tabelle in der DB eine entsprechende UTF-8 Collation/Charset haben (und das Default Charset für die DB am besten auch, falls man neue Module hinzufügt). Wenn die Tabellen vor diesem Punkt schon Inhalt haben, braucht man dazu ein spezielles Vorgehen, damit die Zeichen nicht falsch verändert werden in der DB. Da du den Inhalt ohne Anpassen des Table-Charsets "von Hand" falsch verändert hast, ist das gar nicht so einfach, dass wieder automatisch zu korrigieren...
Re: Probleme mit Zeichen-Kodierung
Posted: Tue Jun 10, 2008 6:02 am
by cyberman
mm231 wrote:
cyberman wrote:
Und wo holst du die Übersetzung her? Via Copy & Paste?
Copy/Paste.
Dann schau mal, welches Charset das Original verwendet.
So kann es durchaus Probleme machen, wenn du etwas von einer anders kodierten Webseite nach utf-8 kopierst, dass dann der anders kodierte Source eingefügt wird, der dann unter utf-8 Fragezeichen produziert - deswegen die Frage:
Und was steht hier bei dir im html Source?
Wo "hier?"
Sorry, natürlich in der Source-Ansicht von TinyMCE

...
Re: Probleme mit Zeichen-Kodierung
Posted: Tue Jun 10, 2008 11:52 am
by mm231
Im TinyMCE steht nach Eingabe sowhl im WYSIWYG als auch im Soruce miliardářský lupič, auch nach dem Klicken von "Anwenden". Klicke ich auf "Absenden", so dass ich in der Seitenübersicht bin und öffne die Seite nochmals, steht im WYSIWYG und auch im Source miliardá?ský lupi?
Re: Probleme mit Zeichen-Kodierung
Posted: Tue Jun 10, 2008 12:04 pm
by cyberman
Hmm, seltsam - wie du sicherlich bei mir gesehen hast, funktioniert es.
Ändere mal die Kodierung in den Voreinstellungen des Tiny (ist im Normalfall RAW) und gib dann nochmal das Wort neu ein.
Re: Probleme mit Zeichen-Kodierung
Posted: Tue Jun 10, 2008 12:09 pm
by Wiedmann
Im TinyMCE steht nach Eingabe sowhl im WYSIWYG als auch im Soruce miliardářský lupič, auch nach dem Klicken von "Anwenden".
Hier ist noch keine DB im Spiel.
Klicke ich auf "Absenden", so dass ich in der Seitenübersicht bin und öffne die Seite nochmals, steht im WYSIWYG und auch im Source miliardá?ský lupi?
Wenn du für die DB-Verbindung/Results utf-8 vorgibst, deine Tabellen Latin haben, wie schon gesagt der logische Effekt.
text/html;charset=windows-1250
Wieso steht da wo windows-1250, wenn du doch eigentlich mit utf-8 arbeiten willst (oder ist das nicht vom CMSMS)?
Re: Probleme mit Zeichen-Kodierung
Posted: Tue Jun 10, 2008 12:33 pm
by cyberman
Wiedmann wrote:
text/html;charset=windows-1250
Wieso steht da wo windows-1250, wenn du doch eigentlich mit utf-8 arbeiten willst (oder ist das nicht vom CMSMS)?
Das ist von der Seite, von der die tschechische Übersetzung kopiert wird

...
Re: Probleme mit Zeichen-Kodierung
Posted: Tue Jun 10, 2008 12:40 pm
by Wiedmann
cyberman wrote:Das ist von der Seite, von der die tschechische Übersetzung kopiert wird
Ah. ok. Dachte schon von CMSMS.
(Von der Quelle interessiert das ja nicht wirklich, da der Browser sowas korrekt nach utf-8 umkodiert, beim coipy 'n paste in das utf-8 formular von CMSMS)