我最近把主机从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。
1条答案
按热度按时间r8xiu3jd1#
我找到了解决我主要问题的办法。
使用
mysqli_character_set_name($con)
我得到了正确的字符集godaddy
&localhost
. 它回来了latin1
.所以我用
mysqli_set_charset($con, "latin1");
它修复了返回正确表情的字符集。仍然不确定为什么要将列排序规则更改为
utf8mb4
导致like子句不返回结果。