【发布时间】:2018-04-24 07:32:56
【问题描述】:
我使用 json 从我的数据库中回显变量。然而 ë 显示为■。
为了纠正这个问题,我这样做了:
没有运气。任何想法如何解决。
编辑:
if (isset($_GET['term'])){
$return_arr = array();
try {
$conn = new PDO("mysql:host=".DB_SERVER.";port=8889;dbname=".DB_NAME, DB_USER, DB_PASSWORD);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('SELECT School FROM Schools WHERE School LIKE :term');
$stmt->execute(array('term' => '%'.$_GET['term'].'%'));
while($row = $stmt->fetch()) {
$return_arr[] = $row['School'];
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
/* Toss back results as json encoded array. */
echo mb_detect_encoding($return_arr, 'auto');
}
【问题讨论】:
-
您考虑过
JSON_UNESCAPED_UNICODE标志吗?见php.net/manual/en/function.json-encode.php。 -
我试过了,结果还是一样
-
echo mb_detect_encoding('■', 'auto');返回它已经是 UTF-8。 JSON_UNESCAPED_UNICODE 不会帮助您,因为 "\xc3\xa9" 是 é 的未转义 unicode。我怀疑问题出在您的数据库字符集中
-
它不是数据库。我已经通过编写 test.php 来回显没有 json 的变量来进行测试。如果没有 JSON,它会正确显示。
-
它仍然可能是数据库。如果从数据库中获取变量,然后运行 echo mb_detect_encoding($variable, 'auto'),结果是什么
标签: php json pdo utf-8 character-encoding