无法获取这多语言文本通过使用php休息API

p3rjfoxz  于 2023-03-28  发布在  PHP
关注(0)|答案(1)|浏览(85)

我为我的一个应用程序构建了restful api服务。多语言文本存储在数据库中很好,甚至多语言文本在web应用程序中也很好。当我试图通过使用api调用获取数据时,我得到了这样的文本“??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????“谁能帮帮我,拜托。
我尝试使用REST API获取多语言数据,但它显示的文本如下所示:"data": [ { "message_id": "19881758", "message_status": "0", "message": "??? ???? ?????????", "sent_date": "2023-03-27 08:43:24" },

3qpi33ja

3qpi33ja1#

看起来你没有正确处理数据的编码。在执行任何查询之前,你可以尝试将PDO连接的字符集设置为UTF-8。
例如:下面是我用来连接的示例方法

<?php 
    class Database {
        private $host = "localhost";
        private $database_name = "mydatabasename";
        private $username = "root";
        private $password = "";
        public $conn;
        public function getConnection(){
            $this->conn = null;
            try{
                $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->database_name, $this->username, $this->password);
                $this->conn->exec("set names utf8");
            }catch(PDOException $exception){
                echo "Database could not be connected: " . $exception->getMessage();
            }
            return $this->conn;
        }
    }  
?>

$this->conn->exec("set names utf8");行将MySQL连接的字符集设置为UTF-8。
您还可以尝试使用header()函数设置PHP脚本本身的字符集。

header('Content-Type: text/html; charset=utf-8');

这会将响应的字符集设置为UTF-8,这应该可以解决这个问题。如果它们都不起作用,那么可能是数据库本身没有正确编码。

相关问题