[geloest] Probleme mit Zeichen-Kodierung
Re: [geloest] Probleme mit Zeichen-Kodierung
Um Fall4 zu erreichen: Kann ich denn nun einfach die Kollation ändern? Gibt es eine Anleitung?
Re: [geloest] Probleme mit Zeichen-Kodierung
Stimmt, allerdings wird das Charset der DB nur hergenommen, wenn man beim erstellen einer Tabelle kein Charset angibt.NaN wrote:Warscheinlich, weil die DB nicht vom CMS angelegt wird.
--> Ergo muss CMSMS beim "CREATE TABLE" nur mit angeben, dass die Tabelle ein utf-8 Charset haben soll.
Wie oben geschrieben, das Charset der DB ist nicht wichtig. Es muss nur geprüft werden, ob das eingesetzte DBMS überhaupt Charsets unterstützt.NaN wrote:Gut, man könnte bei der Installation prüfen, welche Kollation die DB hat und diese vor der Erstellung der Tabellen auf UTF-8 setzen. (Oder zumindest eine Meldung ausgeben, dass Zeichenkodierung von CMS und DB nicht 100% kompatibel sind.)
Das Chasrset der DB vom Installer ändern zu lassen, mag allerdings nicht unbedingt das sein, was der User haben will.NaN wrote:Ich weiß nicht wie diese alle funktionieren und ob man da die Kollation der DB einfach ändern kann/darf.
Es wäre natürlich manchmal geschickter, das Charset der DB auch auf utf-8 zu setzten, weil dann Tabellen die von Modulen bei der Installation erstellt werden, auch gleich das richtige Charset erhalten. Module erstellen ja ihre Tabellen selbst mit einem einfachen "CREATE TABLE". IMHO wäre es aber hier eh gescheiter, wenn es eine Zentrale Methode im Core gäbe, die das Erstellen für die Module übernimmt, anstatt dies die Module selbst machen zu lassen.
Da sind zwar einige Treiber dabei, CMSMS unstützt(e) aber nur 3 davon. 1 von denen ist jetzt im SVN zusätzlich rausgeflogen, so das es dann nur noch 2 sind.NaN wrote:Nun unterstützt CMSms dank AdoDB Lite allerdings mehrere Datenbanken.
Für den Standardfall (1) CMS ohne "set names 'utf8'", DB mit"latin1") hatte ich dazu mal in der MLE Section ein Script gepostet, was die Konvertierung erledigt. Da du ja jetzt schon falsche Zeichen von Hand korrigiert hast, funktioniert das auch nicht mehr ganz korrekt.mm231 wrote:Um Fall4 zu erreichen: Kann ich denn nun einfach die Kollation ändern? Gibt es eine Anleitung?
Nachtrag:
Das Script ("transform-charset.php") ist hier zu finden:
http://forum.cmsmadesimple.org/index.ph ... #msg103914
(Sollte das Modul "CGExtensions" installiert sein, vorher noch nachfragen. Da gibt es dann was zu beachten)
Last edited by Wiedmann on Fri Jun 13, 2008 11:10 am, edited 1 time in total.
Re: [geloest] Probleme mit Zeichen-Kodierung
Hm,
also ich habe jetzt mal eine Datenbank mit UTF-8 angelegt.
Habe in der include.php vor der Installation "set names 'utf8'" aktiviert.
Und dennoch steht bei Umlauten "Schrott" in der DB.

also ich habe jetzt mal eine Datenbank mit UTF-8 angelegt.
Habe in der include.php vor der Installation "set names 'utf8'" aktiviert.
Und dennoch steht bei Umlauten "Schrott" in der DB.

Re: [geloest] Probleme mit Zeichen-Kodierung
Also wenn du eine vorhandene Demo-Seite bearbeitest oder eine Neue anlegst?Und dennoch steht bei Umlauten "Schrott" in der DB.
Die erzeugten Tabellen haben jetzt aber schon eine 'utf8...' Kollation?also ich habe jetzt mal eine Datenbank mit UTF-8 angelegt.
(Bei der Installation wird ja gar nichts mit Umlaut in die DB geschrieben)
Hm, wie ist dein phpMyAdmin eingestellt, mit dem du dir dann die DB anschaust (Zeichensatz der Vebindung in phpMyAdmin muss auch was mit utf8 sein)?
Re: [geloest] Probleme mit Zeichen-Kodierung
Ich habe folgendes gemacht: Testdatenbank angelegt mit Kollation utf8_unicode_ci. Dann CMSMS 1.3 installiert und dieses set_names in der include.php aktiviert. Dann habe ich miliardářský lupič mit tinymce eingegeben. Das sieht sowohl in der DB als auch auf der Seite korrekt aus, kein Schrott.
Für mich bedeutet das jetzt: Ich sollte die vorhandenen Tabellen exportieren, die DB leeren und die Kollation ändern und dann die Daten wieder importieren - und zwar so, dass die die Tabellen dann UTF sind und alle Sonderzeichen, Umlaute usw. noch stimmen. Gibt es die Möglichkeit zu exportieren, dabei aber auf die Angabe der Kollation zu verzichten (sozusagen nur Rohdaten zu exportieren)?
(Sorry, wenn ich nerve, aber ich blicke durch das ganze ehrlich gesagt nicht mehr so ganz durch, zumal hier anscheinend unterschiedliche Meinungen vorherrschen)
Für mich bedeutet das jetzt: Ich sollte die vorhandenen Tabellen exportieren, die DB leeren und die Kollation ändern und dann die Daten wieder importieren - und zwar so, dass die die Tabellen dann UTF sind und alle Sonderzeichen, Umlaute usw. noch stimmen. Gibt es die Möglichkeit zu exportieren, dabei aber auf die Angabe der Kollation zu verzichten (sozusagen nur Rohdaten zu exportieren)?
(Sorry, wenn ich nerve, aber ich blicke durch das ganze ehrlich gesagt nicht mehr so ganz durch, zumal hier anscheinend unterschiedliche Meinungen vorherrschen)

Re: Probleme mit Zeichen-Kodierung
Wenn du den Export mit MYSQL40-Komatibilität erstellst, werden keine Charset/Kollation-Angaben geschrieben. Vor dem Import dann mit einem Editor überprüfen, ob die ".sql"-Datei wirklich utf-8 kodiert ist, und alle Zeichen darin korrekt sind.mm231 wrote:Gibt es die Möglichkeit zu exportieren, dabei aber auf die Angabe der Kollation zu verzichten
BTW:
"utf8_general_ci" sollte für "unsere" Zwecke langen und ist schneller.
Re: [geloest] Probleme mit Zeichen-Kodierung
Hab's im Prinzip genauso gemacht wie mm231 und einfach für Sitename ein paar Umlaute eingegeben.Wiedmann wrote:
(Bei der Installation wird ja gar nichts mit Umlaut in die DB geschrieben)
Lokal funktioniert es ohne Probleme.
Allerdings habe ich online einen Fehler gemacht.
Die Datenbanken werden ja vom Provider angelegt, und nicht via phpMyAdmin. Somit habe ich beim Erstellen der DB keinen Einfluss auf die Kollation.
Bei All-Inkl kann man lediglich Zeichensatz / Kollation der MySQL-Verbindung für die Anzeige mit phpMyAdmin festlegen.
Die Datenbank muss man vor der Installation des CMS "von Hand" mit der Option "Operationen" in phpMyAdmin auf UTF-8 setzen.
D.h. bei mir war ledigilich die Anzeige in phpMyAdmin UTF-8. Die Datenbank war immer noch Latin1.
Komisch, kaum macht man's richtig, funktionert's

Last edited by NaN on Fri Jun 13, 2008 1:35 pm, edited 1 time in total.
Re: Probleme mit Zeichen-Kodierung
Und wenn man CMSMS in eine ut8-db installiert, nicht vergessen, danach den Index in der Tabelle "cms_module_templates" von Hand anzulegen.NaN wrote:Die Datenbank muss man vor der Installation des CMS "von Hand" mit der Option "Operationen" in phpMyAdmin auf UTF-8 setzen.
(Man kann CMSMS natürlich auch einfach in eine Latin1-DB installieren, und dann mit dem oben erwähnten Script die Datenbank konvertieren lassen)
Komisch, kaum macht man's richtig, funktionert's

Re: Probleme mit Zeichen-Kodierung
Das verstehe ich jetzt nicht ganz. Export und MYSQL40-Kompat. funktionierte einwandfrei. Beim Import erhielt ich den Fehler #1071 - Specified key was too long; max key length is 1000 bytes bei der Tabelle module_templates.Wiedmann wrote:Und wenn man CMSMS in eine ut8-db installiert, nicht vergessen, danach den Index in der Tabelle "cms_module_templates" von Hand anzulegen.NaN wrote:Die Datenbank muss man vor der Installation des CMS "von Hand" mit der Option "Operationen" in phpMyAdmin auf UTF-8 setzen.
Ich habe daher in der SQL-Datei die Zeile KEY `module_name` (`module_name`,`template_name`) entfernt, danach funktionierte es (alle Tabellen sind nun utf8_general_ci.
Was muss ich denn nun noch bei module_templates machen?
Re: Probleme mit Zeichen-Kodierung
In deinem Dump gibt es diesen Abschnitt:mm231 wrote:Was muss ich denn nun noch bei module_templates machen?
Code: Select all
CREATE TABLE IF NOT EXISTS `cms_module_templates` (
`module_name` varchar(200) default NULL,
`template_name` varchar(200) default NULL,
`content` text,
`create_date` datetime default NULL,
`modified_date` datetime default NULL,
KEY `module_name` (`module_name`,`template_name`)
) TYPE=MyISAM;
Code: Select all
CREATE TABLE IF NOT EXISTS `cms_module_templates` (
`module_name` varchar(166) default NULL,
`template_name` varchar(166) default NULL,
`content` text,
`create_date` datetime default NULL,
`modified_date` datetime default NULL,
KEY `module_name` (`module_name`,`template_name`)
) TYPE=MyISAM;
Re: Probleme mit Zeichen-Kodierung
Ah ja, ok. Danke.