[geloest] Probleme mit Zeichen-Kodierung

Deutschsprachiger Support für CMS Made Simple
mm231
Forum Members
Forum Members
Posts: 18
Joined: Mon May 28, 2007 1:04 pm

Re: [geloest] Probleme mit Zeichen-Kodierung

Post by mm231 »

Um Fall4 zu erreichen: Kann ich denn nun einfach die Kollation ändern? Gibt es eine Anleitung?
Wiedmann
Forum Members
Forum Members
Posts: 233
Joined: Wed Mar 26, 2008 1:49 am

Re: [geloest] Probleme mit Zeichen-Kodierung

Post by Wiedmann »

NaN wrote:Warscheinlich, weil die DB nicht vom CMS angelegt wird.
Stimmt, allerdings wird das Charset der DB nur hergenommen, wenn man beim erstellen einer Tabelle kein Charset angibt.
--> Ergo muss CMSMS beim "CREATE TABLE" nur mit angeben, dass die Tabelle ein utf-8 Charset haben soll.
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.)
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:Ich weiß nicht wie diese alle funktionieren und ob man da die Kollation der DB einfach ändern kann/darf.
Das Chasrset der DB vom Installer ändern zu lassen, mag allerdings nicht unbedingt das sein, was der User haben will.

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.
NaN wrote:Nun unterstützt CMSms dank AdoDB Lite allerdings mehrere Datenbanken.
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.
mm231 wrote:Um Fall4 zu erreichen: Kann ich denn nun einfach die Kollation ändern? Gibt es eine Anleitung?
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.

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.
NaN

Re: [geloest] Probleme mit Zeichen-Kodierung

Post by NaN »

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.

???
Wiedmann
Forum Members
Forum Members
Posts: 233
Joined: Wed Mar 26, 2008 1:49 am

Re: [geloest] Probleme mit Zeichen-Kodierung

Post by Wiedmann »

Und dennoch steht bei Umlauten "Schrott" in der DB.
Also wenn du eine vorhandene Demo-Seite bearbeitest oder eine Neue anlegst?
also ich habe jetzt mal eine Datenbank mit UTF-8 angelegt.
Die erzeugten Tabellen haben jetzt aber schon eine 'utf8...' Kollation?


(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)?
mm231
Forum Members
Forum Members
Posts: 18
Joined: Mon May 28, 2007 1:04 pm

Re: [geloest] Probleme mit Zeichen-Kodierung

Post by mm231 »

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)  ;D
Wiedmann
Forum Members
Forum Members
Posts: 233
Joined: Wed Mar 26, 2008 1:49 am

Re: Probleme mit Zeichen-Kodierung

Post by Wiedmann »

mm231 wrote:Gibt es die Möglichkeit zu exportieren, dabei aber auf die Angabe der Kollation zu verzichten
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.

BTW:
"utf8_general_ci" sollte für "unsere" Zwecke langen und ist schneller.
NaN

Re: [geloest] Probleme mit Zeichen-Kodierung

Post by NaN »

Wiedmann wrote:
(Bei der Installation wird ja gar nichts mit Umlaut in die DB geschrieben)
Hab's im Prinzip genauso gemacht wie mm231 und einfach für Sitename ein paar Umlaute eingegeben.
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.
Wiedmann
Forum Members
Forum Members
Posts: 233
Joined: Wed Mar 26, 2008 1:49 am

Re: Probleme mit Zeichen-Kodierung

Post by Wiedmann »

NaN wrote:Die Datenbank muss man vor der Installation des CMS "von Hand" mit der Option "Operationen" in phpMyAdmin auf UTF-8 setzen.
Und wenn man CMSMS in eine ut8-db installiert, nicht vergessen, danach den Index in der Tabelle "cms_module_templates" von Hand anzulegen.

(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
;)
mm231
Forum Members
Forum Members
Posts: 18
Joined: Mon May 28, 2007 1:04 pm

Re: Probleme mit Zeichen-Kodierung

Post by mm231 »

Wiedmann wrote:
NaN wrote:Die Datenbank muss man vor der Installation des CMS "von Hand" mit der Option "Operationen" in phpMyAdmin auf UTF-8 setzen.
Und wenn man CMSMS in eine ut8-db installiert, nicht vergessen, danach den Index in der Tabelle "cms_module_templates" von Hand anzulegen.
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.
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?
Wiedmann
Forum Members
Forum Members
Posts: 233
Joined: Wed Mar 26, 2008 1:49 am

Re: Probleme mit Zeichen-Kodierung

Post by Wiedmann »

mm231 wrote:Was muss ich denn nun noch bei module_templates machen?
In deinem Dump gibt es diesen Abschnitt:

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;
Ändere diesen in:

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;
mm231
Forum Members
Forum Members
Posts: 18
Joined: Mon May 28, 2007 1:04 pm

Re: Probleme mit Zeichen-Kodierung

Post by mm231 »

Ah ja, ok. Danke.
Post Reply

Return to “German - Deutsch”