2017-04-18 5 views
0

私のmySqlデータベースで何か変なことがありました... 私のテーブルは "utf8_unicode_ci"でエンコードされていますが、私がSELECTを行うと、json_encodeは空を与えているのでデータはUTF8ではないようです文字列。utf8_unicode_ciがUTF8ではないようです

私はその後

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

    $q->execute(); 

    $data = $q->fetchAll(); 

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

    return $data; 

、json_encode ... UTF8でデータを再エンコードし、結果を閲覧再度彼の仕事をしなければなりません。しかし、なぜ私のテーブルからのSELECT結果が "utf8_unicode_ci"でエンコードされてもUTF8で直接データを抽出しないのは分かりません...

ありがとう

答えて

1

UTF-8でエンコードされたMysqlテーブルは、十分ではありません。これは、データがUTF-8で "格納"されることを保証するだけです。外部ソースに「渡された」ときは、通過するパイプもUTF-8でエンコードする必要があります。 char set for the connection link identifierも設定する必要があります。

それはそうのようなものを作品:

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

はまた、実際に感謝の@raidenaceをSET NAMES utf8

+0

をチェックしてください。私は[PDO :: MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"]をPDO接続に追加しなければならなかった。 – Macbernie

関連する問題