我是一名Android开发人员,仅使用PHP从MySQL中获取数据(因此我的PHP很差),并且始终可以正常工作,但是我发现我无法使用非英文字母来获取数据
我写了这样的问题How to put in JSON Object non-english letters?
但是在那个问题中我以为这个问题是在json编码中,但是在json中不是问题。(但是现在我知道如何用json解决问题了) 所以我只需要从MySQL获取非英语文本数据
我认为问题出在数据库中,所以我将所有内容都更改为utf-8
,检查了两次,在数据库中进行了相同的查询并获得了预期的结果,所以问题出在php代码中。
然后我研究并认为也许我的php不能维护utf-8,然后在顶部的那行<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
创建一个简单的String变量,该变量包含非英文字母并回显该变量,它向我展示了什么我希望如此,因此我认为php支持utf-8
所以我认为唯一的问题在于mysqli_query
那是我的代码:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<?php
header("Content-type: text/html; charset=utf-8");
$con = mysqli_connect(...);
$sql = "SELECT * FROM news WHERE status = 'actual' ORDER BY id DESC";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - TITLE: " . $row["title"]. " -TEXT: " . $row["text"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($con);
?>
这是我的数据库数据: 结构:
对于所有数据库
MySQL charset: UTF-8 Unicode (utf8)
MySQL connection collation: utf8_unicode_520_ci
我希望获得与标题和文本列相同的数据(您可以在上面看到数据)
但是我得到了
id: 4 - TITLE: ???????? -TEXT: ????????? ??????? ?????, ? ??? ????????? ?? ?????????
id: 3 - TITLE: A little bit... -TEXT: Just some more patience! And you will get this wonderfull application!
id: 1 - TITLE: �p�???�? -TEXT: Just wait a little bit!
我尝试写出所有问题的详细信息,因此请帮助我编写代码,以及应该添加/修改的内容(在哪一行?),以便获得期望的结果。 预先谢谢大家!
已找到解决方案
我应该添加
$con->set_charset("utf8");
在声明$sql