【问题标题】:PHP: JSON output empty because of german charPHP:由于德语字符,JSON输出为空
【发布时间】: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 感谢您的反馈。我都做了,但没有任何改变。 :(

标签: php json database


【解决方案1】:

【讨论】:

  • 格式错误的 UTF-8 字符,可能编码不正确。 :) 我现在设法找到解决方案!谢谢! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2021-10-08
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多