【发布时间】:2014-06-16 21:04:23
【问题描述】:
我正在尝试从我的 MySQL 服务器获取一些数据,但德语变音符号已转换为其 unicode 特定代码。
header("Content-type: application/json; charset=utf-8");
$mysqli = new mysqli('host', 'user', 'pwd', 'databasename');
$mysqli->set_charset("utf8");
$result = $mysqli->query("SELECT Name FROM Table");
SQLtoJSON($result);
function SQLtoJSON($ab) {
$tempArray = array();
$myArray = array();
while($row = $ab->fetch_object()) {
$tempArray = $row;
array_push($myArray, $tempArray);
}
echo json_encode($myArray);
}
输出:
[{"Name":"Frische-B\u00e4ckerei-Huber"}]
应该是:
[{"Name":"Frische-Bäckerei-Huber"}]
我也试过$mysqli->query("SET NAMES 'UTF8'"),但没用。服务器的字符集是 UTF-8。
编辑:肯定是json的问题,var_dump()有正确的文字。
【问题讨论】:
-
您的表格的字符集是否设置为 UTF-8?
-
每个 json 解析库都会正确理解它,所以我会保持原样。这就是 JS 字符串中 unicode 字符的表示方式。
-
您在
$mysqli->set_charset("utf8"));中有一个太多的)更改为$mysqli->set_charset("utf8");,这很可能是问题所在。 -
@gbestard 是的,表格的字符集是 UTF-8