Autor |
Nachricht |
Sarky
Threadersteller
Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 42
Geschlecht:
|
Verfasst Sa 04.02.2006 19:18
Titel
|
|
|
(a) kommt nicht in Frage, da ich bisher nach wie vor keinen sinnvollen Ersatz für meinen Lieblings-Editor Proton gefunden habe und Proton kein Unicode unterstützt - generell läuft man mit Unicode-Dateien unter Windows sowieso permanent die Gefahr sich die Dateien aus Versehen zu zerschiessen, weil es wieder irgendein Programm nicht unterstützt.
(b) Momentan behelfe ich mir mit utf8_decode() was zumindest teilweise den gewünschten Effekt bringt, aber dennoch Probleme verursacht.
(c) müsste dann in _jedes_ Query gesetzt werden, oder? Das kommt ebenfalls nicht Frage.
Das ist doch alles scheisse... mal sehen was ich da jetzt mache, danke jedenfalls erstmal für die Hilfe.
|
|
|
|
|
karmacoder
Dabei seit: 15.04.2002
Ort: Fürth
Alter: 42
Geschlecht:
|
Verfasst Sa 04.02.2006 23:55
Titel
|
|
|
du kannst auch einfach das db schema kopieren auf latin1 ändern und irgendwas wie insert into newdb.table select convert from olddb.table... machen um einmalig deine db wieder auf iso zu bringen
|
|
|
|
|
Anzeige
|
|
|
Sarky
Threadersteller
Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 42
Geschlecht:
|
Verfasst Di 14.02.2006 10:44
Titel
|
|
|
Danke für den Tipp!
Ich stehe nun vor dem nächsten Problem: Nachdem ich es erfolgreich geschafft habe das Datenbank-Backup des alten Providers bei dem neuen einzuspielen ohne dabei ein babylonisches Zeichenwirrwarr zu erzeugen (beim Importieren der SQL-Datei einfach "latin1" als Codierung auswählen) lief auch erstmal alles wunderbar - bis ein PHP-Script ein INSERT losgelassen hat. Nun ist alles wieder zerschossen. Interessanterweise ist es jetzt egal welche Codierung ich manuell im Browser festlege, die Sonderzeichen werden immer durch '?' im Firefox dargestellt.
Hat der mir die Datenbank nun einfach konvertiert oder wie darf ich das verstehen?
Anscheinend handhabt PHP 5 intern die Strings wohl nun auch als UTF-8? Wie verhindere ich das am einfachsten?
Solche dämlichen Zeichensatz-Konflikte können einem echt den Spaß an der Sache rauben.
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
Verfasst Di 14.02.2006 10:46
Titel
|
|
|
Sarky hat geschrieben: | Anscheinend handhabt PHP 5 intern die Strings wohl nun auch als UTF-8? |
Nein. Erst PHP6 wird das tun.
Der Fehler muss wo anders liegen. Ein einziges Insert kann sich nicht auf alle Daten in der DB auswirken. Evtl. sendest Du den falschen Header oder konvertierts die Strings noch irgendwo.
|
|
|
|
|
karmacoder
Dabei seit: 15.04.2002
Ort: Fürth
Alter: 42
Geschlecht:
|
Verfasst Di 14.02.2006 10:47
Titel
|
|
|
es gibt etliche stellen bei dem der charset zu beachten ist.
die datenquelle, die mysql verbindung, die datenbankfelder, die ausgabe.
vll hat dein provider utf8 als default mysql-verbindung?
|
|
|
|
|
Sarky
Threadersteller
Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 42
Geschlecht:
|
Verfasst Di 14.02.2006 11:07
Titel
|
|
|
tacker hat geschrieben: | Sarky hat geschrieben: | Anscheinend handhabt PHP 5 intern die Strings wohl nun auch als UTF-8? |
Nein. Erst PHP6 wird das tun.
Der Fehler muss wo anders liegen. Ein einziges Insert kann sich nicht auf alle Daten in der DB auswirken. Evtl. sendest Du den falschen Header oder konvertierts die Strings noch irgendwo. |
Ich sende nirgendwo einen zusätzlichen Header, der ein anderes Encoding verwendet. Interessant ist nur, dass, wenn ich mit meinem PHP 5 testweise in eine Datei einen String mit Sonderzeichen schreibe, dieser beim Auslesen auch als UTF-8 wieder rauskommt.
karmacoder hat geschrieben: | es gibt etliche stellen bei dem der charset zu beachten ist.
die datenquelle, die mysql verbindung, die datenbankfelder, die ausgabe.
vll hat dein provider utf8 als default mysql-verbindung? |
Also ich habe jetzt einfach mal folgende Daten zusammengesammelt:
phpMyAdmin
Language: German (de-utf-8)
MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Zeichensatz / Kollation der MySQL-Verbindung: utf8_general_ci
Kollation der Tabellenspalten: latin1_german2_ci
phpinfo()
Apache Environment:
HTTP_ACCEPT_ENCODING: ISO-8859-1; utf-8; q=0.7,*;q=0.7
HTTP Headers Information:
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
|
|
|
|
|
karmacoder
Dabei seit: 15.04.2002
Ort: Fürth
Alter: 42
Geschlecht:
|
Verfasst Di 14.02.2006 11:11
Titel
|
|
|
Sarky hat geschrieben: |
phpMyAdmin
MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Zeichensatz / Kollation der MySQL-Verbindung: utf8_general_ci
|
phpmyadmin setz per default die verbindung auf utf8, das läst keine rückschlüsse auf die verbindung zu die du in deinem script benuzt.
|
|
|
|
|
Sarky
Threadersteller
Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 42
Geschlecht:
|
Verfasst Di 14.02.2006 11:12
Titel
|
|
|
Und wie bekomme ich das dann raus?
Mein Script sendet keine zusätzlichen Header für den Zeichensatz oder ändert das Encoding in sonst irgendeiner Weise.
|
|
|
|
|
|
|
|
Ähnliche Themen |
utf-8 vs iso-8859-1 ?
Charset 8859-1 - Probleme mit Umlauten
[PHP + mySQL] Kann Fehler in einer mySQL-Phrase nicht finden
[PHP/MySQL] MySQL Error: 1054, falsche Tabelle ausgewählt?
[MySql]Lost connection to MySQL server during query
[php / mysql] Mysql Daten in php als Link ausgeben
|
|