2016-09-18 96 views
-1

PDO和Slim框架有些問題。點是我不知道我可以如何改變爲UTF8字符。我正在閱讀整個互聯網,但沒有爲我工作。我的JSON響應應該看起來像「ćśąęł」,但是「\ u0107 \ u015b \ u0105 \ u0119 \ u0142」,在我的Android應用程序中是「?????」我檢查了我正在使用的所有文件和程序中的編碼,並將其設置爲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

我已經找到了解決辦法,所以這是在連接字符串爲我工作 添加的charset = UTF8像

$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USERNAME, DB_PASSWORD); 

並在Json編碼中添加「JSON_UNESCAPED_UNICODE」< - 此方法適用於PHP的上述這裏5.3例如

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(); 
    } 

好運;)