【问题标题】:PHP. Json contains NULL values for data in cyrillicphp。 Json 包含西里尔文数据的 NULL 值
【发布时间】:2014-11-09 23:46:05
【问题描述】:

我正在尝试以 JSON 格式获取数据。在数据库中,“员工”表包含西里尔文数据

<?php
$mysqli = new mysqli("localhost","user","password","db");
    $myArray = array();
    if ($result = $mysqli->query("SELECT * FROM employee")) {
        $tempArray = array();
        while($row = $result->fetch_object()) {
                $tempArray = $row;
                array_push($myArray, $tempArray);
            }
        echo json_encode($myArray);
    }

    $result->close();
    $mysqli->close();
?>

结果包含 NULL 而不是西里尔字母的值。

[
{
id: "1",
lastname: null,
firstname: null,
middle: null,
occupation: null,
dob: "1991-01-01",
mobile: "+99999 9999999",
home: "+77777 7777777",
email: "testmail@mail.ru"
}
]

myArray 的输出:

a:2:{i:0;O:8:"stdClass":9:{s:2:"id";s:1:"1";s:8:"lastname";s:7 :"Азизов";s:9:"名字";s:6:"Азиз";s:6:"中间";s:14:"Азизович";s:10:"职业";s:19:"安卓 разработчик";s:3:"dob";s:10:"1991-01-01";s:6:"mobile";s:13:"+99999999999";s:4:"home";s: 13:"+777777777777";s:5:"email";s:22:"testmail@mail.ru";}}

如何解决这个问题?

【问题讨论】:

  • 我们可以得到$myArray的输出
  • @Flosculus,它包含西里尔文的值
  • a:2:{i:0;O:8:"stdClass":9:{s:2:"id";s:1:"1";s:8:"lastname ";s:7:"Азизов";s:9:"名字";s:6:"Азиз";s:6:"中间";s:14:"Азизович";s:10:"职业"; s:19:"Android разработчик";s:3:"dob";s:10:"1991-01-01";s:6:"mobile";s:13:"+99999999999";s:4: "home";s:13:"+777777777777";s:5:"email";s:22:"testmail@mail.ru";}
  • 看起来你已经修好了:S

标签: php json null cyrillic


【解决方案1】:

我刚刚添加了$mysqli-&gt;set_charset("utf8");这行代码将数据编码为UTF-8格式。为什么它不起作用?因为 json_encode 需要 UTF-8 格式的数据

<?php
$mysqli = new mysqli("localhost","user","password","db");
$mysqli->set_charset("utf8");
    $myArray = array();
    if ($result = $mysqli->query("SELECT * FROM employee")) {
        $tempArray = array();
        while($row = $result->fetch_object()) {
                $tempArray = $row;
                array_push($myArray, $tempArray);
            }

        echo json_encode($myArray);
        //echo serialize($myArray);
    }

    $result->close();
    $mysqli->close();
?>

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 2016-08-02
    • 2017-10-05
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多