【发布时间】:2016-10-03 13:37:34
【问题描述】:
有很多话题在讨论我的问题,但我还是解决不了。
我有一个用 JSON 编码的数据库。但是,当我使用 ä、ö、ü 等德语字符输入内容时,输出为空。
这是我的 php 脚本:
<?PHP
error_reporting(E_ALL);
ini_set('display_errors', '1');
//Verbindung zur Datenbank
include "inc_mysql.php";
//SQL-String
$select = "SELECT * FROM module ORDER BY name ASC";
//SQL-Befehl in Variable speichern
$sql = mysql_query($select);
//********************this one was missing!********************
mysql_set_charset("utf8");
//Array erstellen
$jsonArray = array();
while ($row = mysql_fetch_array($sql)){
$jsonArray[] = $row;
}
echo json_encode($jsonArray, JSON_UNESCAPED_UNICODE);
?>
php 文件为 UTF-8 无 BOM。
该列是数据库是utf8_general_ci。
顺便说一句:错误报告只是说 mysql_query() 被贬低了。
对你们来说可能是一个简单的游戏:)
找到解决方案!检查代码!
【问题讨论】:
-
不要使用已弃用的
mysql_*-函数。它们自 PHP 5.5 起被弃用,并在 PHP 7 中完全删除。它们也是不安全的。请改用 MySQLi 或 PDO。 -
如果你输出数据而不将其转换为json会发生什么?那它行得通吗?建议使用
urf8mb4作为字符集,utf8mb4_unicode_ci作为排序规则,而不是旧的utf8_general_ci(mb = 多字节 = 对外国字符的更多支持,而 unicode 对更多语言的排序比一般语言更好)。在这里阅读更多:stackoverflow.com/questions/766809/… -
感谢您的反馈。没有 json 我得到一个输出,但正方形中有一个问号。
-
啊,作为瑞典人,我认识到这一点。回显 json 时,请确保浏览器处于 utf-8 模式。我注意到,如果浏览器选择了错误的编码(通常发生在 var_dump()'ing json 数据上)而内容实际上是错误的,我有时会得到这些。尝试在输出数据之前添加一些header,看看效果是否更好
header('Content-Type: application/json; charset=utf-8'); -
@MagnusEriksson 感谢您的反馈。我都做了,但没有任何改变。 :(