2016-09-18 22 views
-1

PDOとSlimフレームワークに問題があります。ポイントは私がutf8 charにどのように変えることができるのか分かりません。私はインターネット全体を読んでいたが、何も私のために働く。私のJSONのレスポンは "ćśąęł"のように見えるはずですが、 "\ u0107 \ u015b \ u0105 \ u0119 \ u0142"であり、私のアンドロイドアプリでは "?????"私は使用しているすべてのファイルとプログラムでエンコーディングをチェックし、utf8に設定されています。PHP、PDO、SLIMフレームワーク、JSONエンコーディングUTF8

私のPDOは

try{ 
     $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USERNAME, DB_PASSWORD); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $stmt = $pdo -> query('SELECT id, title, opinion, upload_image FROM upload_post LIMIT '.$offset.',8'); 
     $data = $stmt->fetchAll(PDO::FETCH_ASSOC); 
     $pdo = null; 
     echo json_encode("ćśąęł"); 
    }catch(PDOException $e) 
    { 
     echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); 
    } 
    } 

私は

$pdo->exec("set names utf8"); 
array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'') 
charset=utf8 in connection string 
$app = new \Slim\Slim();$app->contentType('text/html; charset=utf-8'); in Slim framework, but still nothing 

答えて

2

を試みたものを、私は解決策を見つけたので、これは私のために働いている接続文字列で は

$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USERNAME, DB_PASSWORD); 
のような文字セット= UTF8を追加します

とJson encodeで "JSON_UNESCAPED_UNICODE"を追加します< - このメソッドはここでは5.3上記の例のphp

echo json_encode($data, JSON_UNESCAPED_UNICODE); 

とすべての私のPDO

try{ 
     $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USERNAME, DB_PASSWORD); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $stmt = $pdo -> query('SELECT id, title, opinion, upload_image FROM upload_post LIMIT '.$offset.',8'); 
     $data = $stmt->fetchAll(PDO::FETCH_ASSOC); 
     $pdo = null; 
     echo json_encode($data, JSON_UNESCAPED_UNICODE); 
    }catch(PDOException $e) 
    { 
     echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); 
    } 

グッドラック;)

関連する問題