Ich benutze die PDO-Bibliothek mit MySQL-Datenbank in PHP, aber wenn ich irgendwelche Daten in UTF-8, wie arabische Wörter eingefügt, wird es in die Datenbank aber als ?????????
eingefügt.PDO + MySQL und gebrochen UTF-8 Codierung
In meinem eigenen Rahmen, nachdem ich die PDO-Verbindung zu erstellen, sende ich zwei Abfragen - SET NAMES utf8
und SET CHARACTER SET utf8
. Es funktioniert immer noch nicht.
Beispiel:
loadclass('PDO', array(
sprintf(
'mysql:host=%s;port=%s;dbname=%s',
confitem('database', 'host'),
confitem('database', 'port'),
confitem('database', 'name')
),
confitem('database', 'username'),
confitem('database', 'password'),
array('PDO::ATTR_PERSISTENT' => confitem('database', 'pconnect'))
));
$this->query('SET NAMES ' . confitem('database', 'charset'));
$this->query('SET CHARACTER SET ' . confitem('database', 'charset'));
Umgehung: Verwenden json_encode
Funktionsdaten zu konvertieren, bevor sie in die Datenbank einfügen und verwenden json_decode
sie zu entschlüsseln, nachdem das Abrufen. So mache ich es jetzt.
Sind Sie sicher, dass dies kein PHP-Problem ist? Stellen Sie sicher, dass Sie mbstring installiert haben? – Rahly
Ich würde vorschlagen, die gleiche Zeichenfolge zurückzusenden und zu überprüfen, ob sie in Ordnung ist. Nur als Test. – s3v3n
Was ist der Wert confitem ('database', 'charset')? –