PHP, PDO, SLIM 框架, JSON 编码UTF8

PHP, PDO, SLIM framework, JSON encoding UTF8

PDO 和 Slim 框架有些问题。重点是我不知道如何更改为 utf8 字符。我正在阅读整个互联网,但对我没有任何帮助。我的 JSON 回复应该看起来像“ćśąęł”,但实际上是“\u0107\u015b\u0105\u0119\u0142”,而在我的 android 应用程序中是“??????”我检查了我正在使用的所有文件和程序的编码,并将其设置为 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 

我找到了解决方案,所以这对我有用 在连接字符串中添加 charset=utf8 like

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

祝你好运;)