来自MySQL的json解码西里尔文

时间:2015-04-20 09:09:33

标签: php mysql json

我正在尝试使用php从MySQL数据库中获取西里尔文数据 我设置了utf-8

$db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());

    mysql_query("SET character_set_client = utf8");
    mysql_query("SET character_set_connection = utf8");
    mysql_query("SET character_set_results = utf8");

当我在db中设置西里尔数据时,它可以正常工作,但是当我想要它时:

 $product["id"] = $row["id"];
    $product["first_name"] = $row["first_name"];
    $product["last_name"] = $row["last_name"];
    $product["vk_id"] = $row["vk_id"];
    $product["points"] = $row["points"];

    // push single product into final response array
    array_push($response["users"], $product);
 echo json_encode($response);

它给了我\u0416\u0430\u043c\u0431\u044b\u043b

当我将json_encode($response); 更改为json_encode($response, JSON_UNESCAPED_UNICODE);

它给了我:ЖамбыР

如何获取可读的西里尔数据?

1 个答案:

答案 0 :(得分:1)

首先,停止使用mysql扩展程序,而不是使用mysqlipdoMySQL容易受到sql注入攻击。有关详细信息,请阅读此answer 其次,如果使用mysqli_set_charset('utf8')mysql_set_charset('uft8')在您易受攻击的情况下将seeion编码设置为utf8。
第三,检查数据库字段中的编码和衔接,很可能是像latin1一样,将其更改为utf8_general_ci。 最后,我怀疑你在浏览器中查看结果?如果是这种情况,那么在php中设置标题就像header('Content-Type: text/html; charset=utf-8');