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
Martin Reisch [ Sa, 26 Januar 2008 19:20 ] [ ID #1916954 ]

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
Carsten Wiedmann [ Sa, 26 Januar 2008 19:30 ] [ ID #1916955 ]

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?
>
Martin Reisch [ Sa, 26 Januar 2008 22:08 ] [ ID #1916959 ]

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
meissnerj [ So, 27 Januar 2008 09:43 ] [ ID #1917362 ]

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
Claus Reibenstein [ So, 27 Januar 2008 15:26 ] [ ID #1917368 ]
PHP » de.comp.lang.php.misc » PHP4 -> PHP5 Probleme mit iso-8859-2, MySQL und latin2_general_ci

Vorheriges Thema: apache mod_userdir mit php auswerten
Nächstes Thema: Catchable fatal error - catchable?