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();
}
祝你好运;)
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();
}
祝你好运;)