gpt4 book ai didi

php - MySQL 数据库存储问号而不是特殊字符

转载 作者:可可西里 更新时间:2023-11-01 08:04:00 25 4
gpt4 key购买 nike

我正在尝试在我的网站内显示非常特殊的字符(如 𝑻𝒆𝒔𝒕 𝒐𝒏𝒆 𝒕𝒘𝒐 𝒕𝒉𝒓𝒆𝒆),并将其存储到我的数据库中。当我写这样的特殊字符时,它们会显示一次,但是当我重新加载页面并且服务器从数据库中获取字符串时,它会显示为“???????? ?????? ??? ????????我试图做很多事情来解决这个问题,但没有一个奏效。这不是可视化问题,因为 header 设置正确:

<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');

但是这些东西都不起作用。作为补充,我尝试(只是为了调试)将数据库文本字段中的字符串更改为𝑻𝒆𝒔𝒕 𝒐𝒏𝒆 𝒕𝒘𝒐 𝒕𝒉𝒓𝒆𝒆,我得到了一个错误:

Warning: #1300 Invalid utf8 character string: 'F09D91'

Warning: #1366 Incorrect string value: '\xF0\x9D\x91\xBB\xF0\x9D...' for column 'text' at row 1

我真的尝试了在这里和外部找到的所有解决方案,但没有任何效果。任何帮助将不胜感激。

最佳答案

如评论中所述。

在很多情况下,您需要将所有代码放在
$db->query("SET character_set_results=utf8mb4"); 该行之前。

使用不同的文件编码也有帮助。

奇怪的是,我以前不得不自己这样做。也可能是服务器的默认编码可能在某处覆盖了某些内容;我以前也遇到过这个问题。

此外,如果您在某处进行查询,例如执行 SELECT、UPDATE 或 INSERT,那么重要将编码代码放在查询之前,如果是这样的话。

关于php - MySQL 数据库存储问号而不是特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39144152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com