PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Probleme mit Umlauten in DB (http://www.selfphp.de/forum/showthread.php?t=24472)

webmantz 04.11.2011 04:40:03

Probleme mit Umlauten in DB
 
Hallo,

hoffentlich kann mir jemand weiterhelfen. Ich habe ein Problem mit Umlauten, die ich nicht richtig in eine MySQL-Tabelle kriege. Und zwar stammen die String aus der PHP-Bibliothek imdbphp, mit der man Informationen von den IMDB-Seiten abfragen kann.

Immer wenn ich versuche, einen String, den mir diese Bibliothek liefert, in meine Datenbank zu schreiben, werden alle Umlaute und Sonderzeichen falsch kodiert. Aus "Künstler" wird "Künstler", oder aus "Nimród" wird "Nimród".
Gebe ich den String aber direkt aus, z.B. mit var_dump() oder mit echo, dann werden die Umlaute richtig angezeigt.

Komisch ist auch, wenn ich den "falschen" Wert wieder aus der Datenbank lese und anzeigen lasse, ist auch alles richtig. Trotzdem steht er "falsch" in der Datenbank, eine Suche nach "Künstler" oder "Nimród" liefert kein Ergebnis - weshalb die Sache für mich wirklich problematisch ist.

Versucht habe ich schon vieles: die Datenbank von UTF8 auf LATIN1 umgestellt, die Datenbankverbindung mit SET NAMES und SET CHARSET umgestellt, den String vor dem Schreiben in die DB mit utf8_decode() oder utf8_encode() versucht umzuwandeln, meine PHP-Datei (und auch die imdbphp-Dateien) in verschiedenen Kodierungen gespeichert (DOS, UNIX, U8, ...), etc. Ich habe mein Script sowohl auf einem Linux-Server (wo auch die DB liegt) als auch auf einem Win7-PC mit Apache laufen lassen. Egal was ich mache, ich kriege den String nicht richtig in die Datenbank.

Die MySQL-Datenbank liegt übrigens auf einem Linuxserver (NAS von QNAP) und wird automatisch als UTF8 angelegt. Ich kann zwar einzelne Datenbanken und Tabellen als LATIN1 deklarieren, das ändert aber leider nichts an meinem Problem.

Hoffentlich kann mir noch jemand einen Tip geben, sonst muss ich das mit imdbphp wohl leider bleiben lassen und mich auf die Suche nach einer Alternative begeben. Kennt vielleicht jemand eine solche Alternative?

Danke für eure Hilfe!

Gruß, André

droehn 09.01.2012 15:48:21

AW: Probleme mit Umlauten in DB
 
Moin,

in welcher Codierung liest die imdbphp-Bibliothek die Daten von IMDB aus? Vielleicht ist da der Hund begraben?

Grüsse
David

meikel (†) 16.01.2012 06:18:52

AW: Probleme mit Umlauten in DB
 
Zitat:

Zitat von webmantz (Beitrag 142393)
hoffentlich kann mir jemand weiterhelfen. Ich habe ein Problem mit Umlauten, die ich nicht richtig in eine MySQL-Tabelle kriege.

1. mit welcher Collation wurde die DB erzeugt?
2. welche Collation hat die betreffende Textspalte?
3. stimmt der Charset des Input mit der Tabellen Collation überein?

DokuLeseHemmung 16.01.2012 10:42:34

AW: Probleme mit Umlauten in DB
 
Zitat:

Aus "Künstler" wird "Künstler",
Vermutlich: Falsche Anwendung von htmlspecialchars() oder htmlentities()
Die DB macht diese Wandlung nicht!

meikel (†) 16.01.2012 11:41:24

AW: Probleme mit Umlauten in DB
 
Zitat:

Zitat von DokuLeseHemmung (Beitrag 142771)
Vermutlich: Falsche Anwendung von htmlspecialchars() oder htmlentities()
Die DB macht diese Wandlung nicht!

Die nicht aber das:
PHP-Code:

    /** Try to recode all non-UTF-8 content to UTF-8?
     *  As the name suggests, this only should concern IMDB classes.
     * @attribute boolean imdb_utf8recode
     */
    
$this->imdb_utf8recode FALSE

mdb_config.class.php

Hier steht noch mehr:
http://projects.izzysoft.de/trac/imd...iguriertwerden


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:23:42 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.