繁体   English   中英

PHP/MySQL 的字符编码问题

[英]Character encoding issue with PHP/MySQL

我有一个在我的计算机上本地开发的 Web 应用程序,我最近在我的 Web 服务器上使用 MySQL 的完全相同的设置启动了它,但由于某种原因,我遇到了字符编码问题,其中“智能引号”(')显示为带有问号 ( ) 的黑色三角形,但仅在服务器上显示。

这是在 HTML 上:

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

我的本地 MySQL 数据库(没有字符问题)是 MySQL 5.7.26,带有一个 InnoDB 表,采用UTF8MB4编码,表排序规则为utf8mb4-unicode-ci

我的服务器 MySQL 数据库(有字符问题)是 MySQL 5.5.5-10.3.21,带有一个带有UTF8MB4编码的 InnoDB 表和一个utf8mb4-unicode-ci的表整理

也许我错过了某个地方的 PHP 设置?

编辑:

如果我在我的电脑上运行这个脚本是完美的,但是如果我在我的服务器上运行相同的脚本,数据库中的数据相同,它会给我一个字符编码问题:

error_reporting(E_ALL);

include 'dbconfig.php';

$id = 19;

try {
    $pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_TO_STRING);
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    $sql = $pdo->prepare("SELECT * FROM products WHERE id=:id");
    $sql->execute(['id' => $id]); 

    var_dump ($sql->fetch());

    while ($row = $sql->fetch()) {
        $data[] = $row;
    }

    echo json_encode($data);

} catch(PDOException $e) {
    //echo "Error: " . $e->getMessage();
    echo "Database Error";
}
$conn = null;

(因为这清楚地表明 PDO 遗漏,我重新打开)

一行修改:

$pdo = new 
    PDO("mysql:host=$servername;dbname=$dbname;dbname=db;charset=utf8mb4'",
        $username, $password);

参考:
http://mysql.rjweb.org/doc.php/charcoll#php
UTF-8 字符问题; 我看到的不是我存储的(特别是寻找“黑钻石”。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM