changing类似于表排序规则的子句不返回任何内容

zc0qhyus  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(348)

我最近把主机从godaddy换成了hostinger。这一变化导致emoji无法正确显示(随机字符)。
所以我跟进了霍廷格的文章,解决了这个问题,但没有起到任何作用。
所以我尝试了其他的解决方案。其中包括运行时的set charset。

$sql = "set character_set_client=utf8";
mysqli_query($con, $sql);
$sql = "set character_set_connection=utf8";
mysqli_query($con, $sql);
$sql = "set character_set_results=utf8";
mysqli_query($con, $sql);
$sql = "set character_set_server=utf8";
mysqli_query($con, $sql);

这也没什么用。所以我把我的表列排序规则改为 utf8mb4_bin 它修复了我的表情。所有表情符号都正确显示。
但是现在 LIKE 我用于搜索的子句不返回任何内容。
sql语句

SELECT * FROM `allfiles` WHERE `file_name` LIKE '%some name%'

编辑
我不能用utf8mb\u bin排序规则在phpmyadmin中搜索
数据库服务器信息
本地服务器

Server: Localhost via UNIX socket
Server type: MariaDB
Server version: 10.1.26-MariaDB - Source distribution
Protocol version: 10
User: root@localhost
Server charset: UTF-8 Unicode (utf8)

霍廷格

Server: 127.0.0.1 via TCP/IP
Server type: MariaDB
Server version: 10.1.29-MariaDB - MariaDB Server
Protocol version: 10
User: user@127.0.0.1
Server charset: UTF-8 Unicode (utf8)

戈达迪

Server: Localhost via UNIX socket
Server type: MySQL
Server version: 5.6.36-cll-lve - MySQL Community Server (GPL)
Protocol version: 10
User: user@localhost
Server charset: UTF-8 Unicode (utf8)

也。无需更改列排序规则或在运行时指定字符集,我就能在localhost和godaddy上完美地查看emoji。

r8xiu3jd

r8xiu3jd1#

我找到了解决我主要问题的办法。
使用 mysqli_character_set_name($con) 我得到了正确的字符集 godaddy & localhost . 它回来了 latin1 .
所以我用 mysqli_set_charset($con, "latin1"); 它修复了返回正确表情的字符集。
仍然不确定为什么要将列排序规则更改为 utf8mb4 导致like子句不返回结果。

相关问题