我写了一个小脚本,它从MySQL表中获取数据并将其放入JSON数组中。但是,字符编码存在一个问题,即使我在任何地方都设置了UTF-8。这里是脚本:MySQL到JSON:用UTF-8编码德国特殊字符的问题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSON</title>
</head>
<?php
header('Content-type: text/html; charset=UTF-8');
$con = mysqli_connect("HOST", "USERNAME", "PASSWORD", "DATABASE");
if (!$con) {
trigger_error('Could not connect to MySQL: ' . mysqli_connect_error());
}
mysqli_set_charset($con,"utf8");
mysql_query("SET NAMES SET 'utf8'");
mysql_query("SET character_set_client = 'utf8'");
mysql_query("SET character_set_connection = 'utf8'");
mysql_query("SET character_set_results = 'utf8'");
$sql = "SELECT * FROM table";
$result = mysqli_query($con, $sql);
$rows = array();
while($r = mysqli_fetch_assoc($result)) {
$rows[]=$r;
}
print json_encode($rows);
mysqli_close($con);
?>
</html>
在输出中,我得到值“\ u00e4”而不是“ä”。
一些额外的信息:
- 表是utf8_general_ci(因为都是其列)
- PHP文件是UTF8
我在做什么错? 感谢您的帮助!
尝试[this](http://php.net/manual/de/mysqli.set-charset.php) – Jens 2014-09-05 19:51:36