我最近改变了从Godaddy到Hostinger的托管。这改变导致表情符号没有正确显示(随机字符)。
所以我跟进了Hostinger article修复了这个没有帮助的问题。
所以我在SO上尝试了其他一些提到的解决方案。其中包括运行时的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);
这也没有做任何事情。所以我将我的表格列Collation更改为utf8mb4_bin
并修复了我的表情符号。所有表情符号都显示正确。
但是现在用于搜索的LIKE
子句不会返回任何内容。
SQL
SELECT * FROM `allfiles` WHERE `file_name` LIKE '%some name%'
修改
我无法使用utf8mb_bin collation在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)
Hostinger
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)
Godaddy的
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上完全正常地查看表情符号。
答案 0 :(得分:0)
我找到了解决我主要问题的方法。
使用mysqli_character_set_name($con)
我得到了正确的字符集,使用了godaddy
& localhost
。返回latin1
。
所以我使用mysqli_set_charset($con, "latin1");
修复了charset,它返回了正确的表情符号。
仍然不确定为什么将列排序规则更改为utf8mb4
导致LIKE子句不返回任何结果。