Einzelnen Beitrag anzeigen
  #6 (permalink)  
Alt 22.09.2008, 01:27
Mussa Mussa ist offline
xt:Commerce Support Kunde
 
Registriert seit: 10.05.2008
Beiträge: 1
Böse Anleitung zum Unstellen auf UTF9

Zitat:
Zitat von reinhardt Beitrag anzeigen
Mal ne blöde Frage, was hat der Zeichensatz der DB mit den Darstellungsproblemen zu tun?
Nichts. Wenn Du nur einen Zeichensatz hast, den Du darstellen willst, also nur Deutsch und Englisch z.B.
Zitat:
Zitat von reinhardt Beitrag anzeigen
Die meisten Darstellungsprobleme kommen doch daher, dass ich die Daten z.B. in UTF-8 abspeicher, aber in ISO-8859-15 ausgeben, oder anders herum.
So kann man das auch sehen.
Sinnvoll ist es durchaus einen Shop, der verschiedenste Sprachen 'spricht' gleich UTF8 zu codieren und dann dem Shop zu sagen, dass er auch UTF8 ausliefern soll. Dann muss die Datenbank auch UTF8 codieren und es klappt auch mit Kyrillisch oder Farsi oder gar Chinesischen oder Japanischen Schriftzeichen.
Kyrillisch geht ja noch, die schreiben ja auch von links nach rechts aber bei Farsi oder Asiatischer Schrift wird es ganz übel - aber mit UTF8 hast Du die Zeichen zumindest mal richtig in der Datenbank, das Ausliefern musst Du dann mit einem angepassten theme vornehmen.
Zitat:
Zitat von reinhardt Beitrag anzeigen
Ich gehe mal davon aus, wir sprechen nur von diesen beiden Zeichensätzen.
Das ist doch langweilig!
Zitat:
Zitat von reinhardt Beitrag anzeigen
Habe ich in der Datenbank meine Zeichen in ISO-8859-15 abgelegt, dann muss ich das dem Client auch sagen. Das mache ich doch mit dieser Zeile:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
Toll. Und wo machst Du diese Zeile hin?
Es gibt ja nur ein paar unwichtige Konfigurationsdateien bei XTC!
So etwas hasse ich, klugsch... und einen Brocken hinwerfen, mit dem man nicht wirklich was anfangen kann.

Alles muss man selber machen, also, umbauen von XTC geht so:
Erst einmal ein Backup der Datenbank machen, wenn man nicht (wie ich) den Shop gleich auf UTF8 umstellen will. Ich habe dafür PHPmyadmin benutzt, da klickt man einfach auf export, wählt SQL als Export und klickt Senden an, damit man es herunterladen kann.

Die Manipulation der Datenbank habe ich direkt mit mysql gemacht, das Kommando dafür ist:
ALTER DATABASE <Datenbankname_ohne_Klammer> DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
So, jetzt ist die Datenbank (für neu angelegte Tabellen) auf UTF8 eingestellt. Dumm ist nur, dass da zig Tabellen schon drin sind, die man nun alle umwandeln muss:
ALTER TABLE <tablename> CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
So, wenn man die alle durch hat, schaut man mit PHPmyadmin mal nach, ob sie auch alle schön konvertiert worden sind und damit ist die Datenbank erstmal erledigt.

Dumm ist nur, dass nun die Datenbank UTF8 liefert, nun aber lustige Zeichen erscheinen, wenn man sich die Seite anschaut. Was tun?

Der Schlüssel hierfür liegt in /includes/header.php auf ca. Zeile 35:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Damit liefert der Shop nun UTF8 aus, aber dummerweise weiss er noch nicht, dass aus der Datenbank nun auch UTF8 kommt:
In inc/xtc_db_connect.inc.php auf etwa Zeile 39 steht:
if ($$link) mysql_select_db($database);
da setzt der Könner noch:
mysql_query("SET NAMES 'UTF8'");
drüber und gut is.

Dumm ist nur das Kontaktformular, da habe ich mal einen Test gefahren und mit Sonderzeichen aus aller Herren Länder um mich geworfen und es kam im Header die Info mit der Mail an:
Content-Type: text/plain; charset = "iso-8859-15"
Content-Transfer-Encoding: 8bit
Was ja in dem Fall total sch...ade ist.

Vielleicht weiss ja jemand in dem Fall mehr als ich, ich denke, dass ich da PHP sagen muss, in diesem Fall doch dem Mailserver (in meinem Fall Postfix), dass diese Mail UTF8-codiert ist.
Allerdings wage ich zu bezweifeln, dass das so einfach geht, wie das oben beschriebene.

Hoffe, das Problem des einen oder anderen nun gelöst zu haben.
Ich muss nun ein Theme anpassen und ich habe keine Ahnung, wie ich das machen soll um persische Schriftzeichen richtig von rtl (right to left) auszugeben, denn in der Datenbank landen sie andersrum, wenn man sie eingibt. Ganz schön gaga...

Gruß,
Mussa
Mit Zitat antworten