表情符号显示为?在 MySQL 数据库中
emoji display as ? in MySQL database
表情符号存储为 ?在我的数据库中(当我使用 phpMyAdmin 可视化它们时),但是当我使用一个简单的请求(来自 php)检索它们时,我得到了真正的价值。
数据库行(使用phpMyAdmin)
来自 php 的请求
$query = "SELECT id,com
FROM coms_table
WHERE id = 627";
结果
id com
627 \ud83d\ude0e
使用这个命令
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
我明白了:
my.cnf 文件:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
default-storage-engine=MyISAM
innodb_file_per_table=1
performance-schema=0
innodb_buffer_pool_size=134217728
max_allowed_packet=268435456
open_files_limit=10000
local-infile=0
character-set-client-handshake = TRUE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
总而言之,问题仅在我使用 phpMyAdmin 连接到数据库时出现。最糟糕的是,当我尝试使用 phpMyAdmin 导入数据库时,所有问号都被真正的“?”所取代,并且数据最终丢失了。
编辑 1
phpMyAdmin>变量
会话值 (utf8) 与预期值 (utf8mb4) 不同
你需要 character_set_client, _connection, and _results
才能全部成为 utf8mb4。其他的无所谓。
单个问号可能意味着数据在插入时丢失了。 (1 个表情符号的 4 个问号表示不同的问题。)
这似乎是一个 phpMyAdmin 错误(已在版本 4.6.4 中更正)。
当您使用 phpMyAdmin 连接到您的数据库时,会话的变量 character_set_client
和 character_set_results
不会使用默认值进行初始化。
看到这个 commit.
如果您遇到此错误并想要 import/export 您的数据库,请不要使用 phpMyAdmin。
解决方法是使用 this link, and the export action using the documentation at this link.
执行导入操作
表情符号存储为 ?在我的数据库中(当我使用 phpMyAdmin 可视化它们时),但是当我使用一个简单的请求(来自 php)检索它们时,我得到了真正的价值。
数据库行(使用phpMyAdmin)
来自 php 的请求
$query = "SELECT id,com
FROM coms_table
WHERE id = 627";
结果
id com
627 \ud83d\ude0e
使用这个命令
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
我明白了:
my.cnf 文件:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
default-storage-engine=MyISAM
innodb_file_per_table=1
performance-schema=0
innodb_buffer_pool_size=134217728
max_allowed_packet=268435456
open_files_limit=10000
local-infile=0
character-set-client-handshake = TRUE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
总而言之,问题仅在我使用 phpMyAdmin 连接到数据库时出现。最糟糕的是,当我尝试使用 phpMyAdmin 导入数据库时,所有问号都被真正的“?”所取代,并且数据最终丢失了。
编辑 1
phpMyAdmin>变量
你需要 character_set_client, _connection, and _results
才能全部成为 utf8mb4。其他的无所谓。
单个问号可能意味着数据在插入时丢失了。 (1 个表情符号的 4 个问号表示不同的问题。)
这似乎是一个 phpMyAdmin 错误(已在版本 4.6.4 中更正)。
当您使用 phpMyAdmin 连接到您的数据库时,会话的变量 character_set_client
和 character_set_results
不会使用默认值进行初始化。
看到这个 commit.
如果您遇到此错误并想要 import/export 您的数据库,请不要使用 phpMyAdmin。 解决方法是使用 this link, and the export action using the documentation at this link.
执行导入操作