我正在尝试在我的网站内显示非常特殊字符(如),并将其存储到我的数据库中。 当我写这些特殊字符时,它们会被显示,但是当我重新加载页面并且服务器从数据库中获取字符串时,它会显示为“??????? ?????? ??? ???????“ 我试图做很多事情来解决这个问题,但没有一个能奏效。 这不是可视化问题,因为标题设置正确:
<meta charset="utf-8">
我尝试做的事情:
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$db->query("SET character_set_results=utf8mb4");
mb_language('uni');
mb_internal_encoding('UTF-8');
$db->query("SET NAMES utf8mb4");
$db->set_charset('utf8mb4');
但这些事情都没有奏效。 另外,我尝试(仅用于调试)将数据库的文本字段中的字符串更改为,并且出现错误:
警告:#1300 utf8字符串无效:'F09D91'
警告:#1366字符串值不正确:'\ xF0 \ x9D \ x91 \ xBB \ xF0 \ x9D ...'代表第1行的'text'列
我尝试了我在这里和现场找到的所有解决方案,但没有任何效果。 任何帮助将不胜感激。
答案 0 :(得分:4)
正如评论中所讨论的那样。
在许多情况下,您需要将所有代码放在后面
该行之前的$db->query("SET character_set_results=utf8mb4");
。
同样使用不同的文件编码也可以提供帮助。
我以前必须自己做,奇怪的是。它也可能是服务器的默认编码,可能会覆盖某些地方;我之前也遇到过这个问题。
另外,如果你在某处查询,比如在SELECT,UPDATE或INSERT中查询,那么编码代码放在查询之前是重要,如果是这样的话。