我正在尝试使用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);
它给了我:ЖамбыР
如何获取可读的西里尔数据?
答案 0 :(得分:1)
首先,停止使用mysql
扩展程序,而不是使用mysqli
或pdo
。 MySQL
容易受到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');