php - 无法从 PHP 中的 MySQL 获取非英文字母(文本)
问题描述
我是 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