首页 > 解决方案 > 无法从 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

标签: phpmysqlutf-8

解决方案


推荐阅读