我想在我的网站上显示非常特殊的字符(例如 ),并将其存储到我的数据库中。当我写入这样的特殊字符时,它们会被正确显示一次,但是当我重新加载页面并从数据库获取字符串时,它们会显示为“??????? ?????? ?????? ??????”。我尝试了很多方法来解决这个问题,但都没有成功。这不是可视化问题,因为头部设置正确:
<meta charset="utf-8">
我尝试过的事情:
- 将服务器的默认字符集设置为utf8。
- 将数据库/表/列的排序规则和字符集设置为utf8mb4_unicode_ci。
- 更改连接字符串为:
$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 在第1行处的'text'列中的不正确字符串值:'\xF0\x9D\x91\xBB\xF0\x9D...'
$db->query("SET character_set_results=utf8mb4");
之后的所有代码放在该行之前。还可以尝试使用不同的文件编码。我自己以前也遇到过这种情况。可能是服务器的默认编码覆盖了某些东西;我以前也遇到过这个问题。 - Funk Forty Niner