PHP4 -> PHP5 Probleme mit iso-8859-2, MySQL und latin2_general_ci
Hallo NG,
mein Provider hat endlich auf PHP5 umgestellt. Die Scripte habe ich
angepasst aber einen Bug kriege ich nicht in den Griff:
Osteuropäische Zeichen werden auf einmal falsch d.h. als ? dargestellt.
Aufbau der Applikation:
Die Applikation holt Einträge aus einer MySQL-DB, die Tabellen sind vom
vom Typ MyISAM, codiert in latin2_general_ci.
Die Einträge selbst wurden über die Applikation in die Datenbank
eingepflegt. Sämtliche PHP-Dialoge haben im HTML Header iso-8859-2
angegeben.
Was habe ich bereits getestet/probiert?
-Deutsche Sonderzeichen werden interessanterweise korrekt gespeichert
und angezeigt?!
-Meta Angaben im HTML-Header gegen UTF-8 ausgetauscht -> Resultat war
dass die betroffenen Zeichen anders, aber auch falsch dargestellt
wurden. Außerdem wurden die deutschen Sonderzeichen ebenfalls falsch
dargestellt.
-PHP.ini durchgestöbert...
HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.7
Ist soweit ich weiß nur ein default nicht von Bedeutung.
Sonst für meine Kenntnisse nichts relevantes gefunden. Leider konnte ich
auch nichts Brauchbares im Netz finden:(
Hat jemand einen Ratschlag was ich als nächstes probieren könnte oder
irgwendwelche Tipps zu Fehlerdiagnose?
Vielen Dank euch Allen!
Stefan
Re: PHP4 -> PHP5 Probleme mit iso-8859-2, MySQL und latin2_general_ci
Martin Reisch schrieb:
> Osteuropäische Zeichen werden auf einmal falsch d.h. als ? dargestell=
t.
>
> Aufbau der Applikation:
>
> Die Applikation holt Einträge aus einer MySQL-DB, die Tabellen sind v=
om
> vom Typ MyISAM, codiert in latin2_general_ci.
>
> Die Einträge selbst wurden über die Applikation in die Datenbank
> eingepflegt. Sämtliche PHP-Dialoge haben im HTML Header iso-8859-2
> angegeben.
Du sagst MySQL nach dem Verbinden mit "SET NAMES" also, dass du mit "Lati=
n2"
arbeiten möchtest?
Gruß
Carsten
Re: PHP4 -> PHP5 Probleme mit iso-8859-2, MySQL und latin2_general_ci
Hallo Carsten, vielen Dank, mit deinem Hinweis und google habe ich nun
den Bug mit nur einer Zeile behoben.
[...]
mysql_connect($server,$user,$pass);
mysql_select_db($db);
mysql_query('SET NAMES latin2'); <-- folgende Zeile legt denn
Zeichenraum für den Datenaustausch zwischen PHP und MySQL fest.
Siehe auch:
http://us3.php.net/mysql_client_encoding
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.ht ml
Carsten Wiedmann schrieb:
> Martin Reisch schrieb:
> Du sagst MySQL nach dem Verbinden mit "SET NAMES" also, dass du mit
> "Latin2" arbeiten möchtest?
>
Re: PHP4 -> PHP5 Probleme mit iso-8859-2, MySQL und latin2_general_ci
Martin Reisch schrieb:
> Hallo Carsten, vielen Dank, mit deinem Hinweis und google habe ich nun
> den Bug mit nur einer Zeile behoben.
>
> [...]
> mysql_connect($server,$user,$pass);
> mysql_select_db($db);
> mysql_query('SET NAMES latin2'); <-- folgende Zeile legt denn
> Zeichenraum für den Datenaustausch zwischen PHP und MySQL fest.
>
> Siehe auch:
> http://us3.php.net/mysql_client_encoding
> http://dev.mysql.com/doc/refman/5.0/en/charset-connection.ht ml
>
>
> Carsten Wiedmann schrieb:
>> Martin Reisch schrieb:
>> Du sagst MySQL nach dem Verbinden mit "SET NAMES" also, dass du mit
>> "Latin2" arbeiten möchtest?
>>
>
>
Kann man den Standardzeichensatz eigentlich irgendwie per php.ini
anpassen. Irgendwo muss er den doch hernehmen, wenn man es nicht
explizit mit set names macht.
Gruß Jens
Re: PHP4 -> PHP5 Probleme mit iso-8859-2, MySQL und latin2_general_ci
Jens Meißner schrieb (kaputtes Quoting manuell korrigiert):
> Martin Reisch schrieb:
>
>> Carsten Wiedmann schrieb:
>>
>>> Du sagst MySQL nach dem Verbinden mit "SET NAMES" also, dass du mit
>>> "Latin2" arbeiten möchtest?
>>
>> mysql_query('SET NAMES latin2'); <-- folgende Zeile legt denn
>> Zeichenraum für den Datenaustausch zwischen PHP und MySQL fest.
>
> Kann man den Standardzeichensatz eigentlich irgendwie per php.ini
> anpassen. Irgendwo muss er den doch hernehmen, wenn man es nicht
> explizit mit set names macht.
Falls es Euch noch nicht aufgefallen ist: Wir sind hier in
de.comp.lang.php.misc und nicht in de.comp.lang.php.datenbanken. Euer
Problem hat mit PHP jedoch nicht das Geringste zu tun, ist hier also falsch.
Gruß. Claus