2017-04-18 4 views
0

Ich habe etwas seltsames mit meiner mySql-Datenbank ... Meine Tabellen sind in "utf8_unicode_ci" kodiert, aber wenn ich eine SELECT auf es mache, scheint Daten nicht UTF8 zu sein, weil json_encode eine leere geben Zeichenfolge.utf8_unicode_ci scheint nicht zu sein UTF8

muss ich das Ergebnis wieder sehen, um die Daten in UTF8 neu kodieren ...

$q = $this->db->prepare("SELECT ..."); 

    $q->execute(); 

    $data = $q->fetchAll(); 

    foreach ($data as $key => $value) { 
     $data[$key] = utf8_encode($value); 
    } 

    return $data; 

Danach, json_encode tun, um seinen Job. Aber ich verstehe nicht, warum das SELECT-Ergebnis von meiner Tabelle encode in "utf8_unicode_ci" die Daten in UTF8 nicht direkt extrahiert ... Es ist sehr redundant, das Array erneut zu durchsuchen ...

Vielen Dank für Ihre Hilfe

Antwort

1

Die Mysql-Tabellen in UTF-8 codiert ist nicht genug. Das stellt nur sicher, dass die Daten in UTF-8 "gespeichert" werden. Wenn es an externe Quellen "weitergegeben" wird, muss sogar die Pipe UTF-8-kodiert sein. Sie müssen auch char set for the connection link identifier einstellen.

Es funktioniert so etwas wie so:

$mysqli = new mysqli("server", "user", "password", "test"); 
$mysqli->set_charset("utf8"); 

Auch SET NAMES utf8 Tat

+0

Check-out, dank @raidenace. Ich musste [PDO :: MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"] zu der PDO-Verbindung hinzufügen. – Macbernie

Verwandte Themen