SQL 排序规则显示不正确

App*_*lap 3 php mysql sql character-encoding

我之前问过这个问题,但是帖子被标记为与这个问题重复并被删除。

我仔细阅读了这篇文章,并尝试了所有建议的方法。不幸的是,这篇文章并没有解决我目前遇到的问题。关于已删除问题的通知让我提出了一个新问题。

原问题:

我最近使用前一个提供商的数据库备份搬到了另一个托管服务提供商。

不知何故,数据库值不再正确显示。

例如,不同的语言 like???????? ?????????将输出为ä¿¡é•·ã®é‡Žæœ›ãƒ»å‰µé€ .

等标题中的商标图标将显示为â„¢

我能做些什么来解决这个问题?考虑到数据库是 1:1,我不知道这里有什么问题。


我所做的

  • 我的整个数据库设置为latin1_swedish_ci. 我已将其更改为utf8mb4_unicode_ci. 这没有做任何改变。

  • 我已经charset=utf8mb4在 PDO mysql 连接 DSN 中指定了。

  • 我已将默认字符集设置为 UTF8。

我有什么遗漏/可以做些什么来解决这个问题吗?


小更新:将数据库上传到我的本地数据库似乎可以正确输出它们,这是 1:1 安装。这是非常令人沮丧的。

  • 网页有 UTF8 编码标签。
  • PHP 信息显示网页以 UTF8 显示。

2020 年 7 月 31 日:

运行查询

SHOW SESSION VARIABLES LIKE 'character_set_%'; SHOW SESSION VARIABLES LIKE 'collation_%';
Run Code Online (Sandbox Code Playgroud)

给了我以下结果:

"character_set_client"  "utf8mb4"
"character_set_connection"  "utf8mb4"
"character_set_database"    "utf8mb4"
"character_set_filesystem"  "binary"
"character_set_results" "utf8mb4"
"character_set_server"  "utf8mb4"
"character_set_system"  "utf8"
"character_sets_dir"    "/usr/share/mysql/charsets/"

"collation_connection"  "utf8mb4_general_ci"
"collation_database"    "utf8mb4_unicode_ci"
"collation_server"  "utf8mb4_unicode_ci"
Run Code Online (Sandbox Code Playgroud)

运行查询SET character_set_results = NULL; SET character_set_results = binary;没有给出任何结果。

K4M*_*K4M 5

  1. 更改数据库中的排序规则或字符集不会更改现有的列和表排序规则设置。同样,更改列的字符集不会更改列中的现有数据。查看每列设置为使用什么。从那里开始。

    从 information_schema.columns 中选择 COLUMN_NAME、CHARACTER_SET_NAME、COLLATION_NAME

  2. 在您的 mysql 客户端中,运行以下命令以查看连接设置是什么

    SHOW SESSION VARIABLES LIKE 'character_set_%'; 显示会话变量如'collat​​ion_%';

  3. 在您的 mysql 客户端中,您可以要求服务器不要进行任何转换,看看是否有帮助(即SELECT在桌子上做一个,看看它看起来如何)。

    SET character_set_results = NULL; SET character_set_results = 二进制;

请参阅此处了解更多详情

https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html