mysql utf8mb4 bin_关于php:Emoji字符(??)在MySQL 5.6版中无法与utf8mb4_bin一起使用

本问题已经有最佳答案,请猛点这里访问。

我试图将表情符号保存到数据库记录中,但是每次保存不正确时。

我已经提到了如何在我的SQL数据库中存储表情符号字符,但仍然无法正常工作。

根据上述问题的解决方案,我尝试将字符集从utf8更改为utf8mb4,并将排序规则从utf8mb4_bin更改。

我尝试了所有类似重置为默认值,然后在数据库表中进行更改的尝试。我尝试了utf8mb4_unicode_ci,utf8_unicode_ci和utf8mb4_bin,但是它不起作用。

我正在使用MySQL 5.6版本。我正在使用以下查询更改排序规则

alter table `users` convert to character set utf8mb4 collate utf8mb4_bin;

上面的代码工作正常,它正在更改数据库中的UTF类型。但是表情符号没有正确保存,而是保存为问号(????)

下面是我的数据库表结构示例:

CREATE TABLE IF NOT EXISTS `users` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'System generated id used for uniqueness',

`introduction` longtext COLLATE utf8mb4_bin,

`other_details` longtext COLLATE utf8mb4_bin,

PRIMARY KEY (`id`),

) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=41213 ;

要使用以下PHP代码保存表情符号:

$dom = new DOMDocument('1.0', 'UTF-8');

$strWithEmoji ="??";

$fullContent = ''

+ $strWithEmoji;

$this->save($fullContent); // Function for saving into database

我不知道确切要存储多少字节,但我只想保存

此表情符号字符" ??"并将其存储为4个问号(????)。

我从下面的链接尝试了所有解决方案,但没有为我工作:

如何在我的SQL数据库中存储表情符号字符

UTF-8贯穿始终

最终的表情符号编码方案

@利亚姆我尝试了已被要求的所有解决方案,但无法正常工作

您已经在2天前的原始问题中添加了几乎所有内容。请不要多次问相同的问题。它不起作用不是问题。

@Liam问题已删除

删除重复项将无济于事。实际上,这使情况看起来更糟...有一个理由将该问题(由主持人)标记为与其他问题重复。可以投票结束此问题的BTW人员即使您删除了该问题也可以看到该问题。

@Liam Ive指定了上一个问题中未实现的所有内容,但并没有帮助我。这是我要解释的另一种情况,然后请指定如何重复。

请提供尝试存储的确切字节,以及实际存储的确切字节。还为问题中的表提供实际的SHOW CREATE TABLE。另外,从您的问题中删除所有frameworks / 3rd party库,并提供一个php + pdo / mysqli only代码来演示问题。

@zerkms更新了问题,我没有确切的字节,我试图仅保存Ive在问题标题中提到的单个表情符号字符。谢谢。

还删除laravel或您拥有的所有东西,仅运行php + pdo / mysqli。这样,您将隔离问题。然后,确保仅php + pdo的文件采用utf8编码,并且pdo连接也为utf8。

@zerkms我不认为问题出在PHP代码上,因为该代码在localhost机器上运行正常,但是仅对于实时服务器,该问题正在发生。

@KRY如果您不想自己解决问题,您正在寻求什么样的帮助?"我不认为" ---很好。那你有什么建议?

@zerkms该代码在我的本地计算机上运行,??但在实时服务器上却没有运行,因此很明显是MySQL的问题,只是我没有捕捉到MySQL存在什么问题,并且Ive已经更新了相关的PHP代码。

@KRY"很清楚它的MySQL问题" ---好,如果它对您很清楚-您可能应该知道答案。否则,我不确定该声明基于什么。如果您不愿意适当地解决问题-我不确定我准备玩猜谜游戏。祝您好运:-)"并且Ive已经更新了相关的PHP代码。" - - 你还没有。隔离意味着您没有任何框架或其他第三方依赖性,只有php + pdo(我可以按原样在本地计算机上自行运行),没有别的。

@zerkms为什么不尝试其他问题?

@KRY好,我想帮助您找出问题,以及在问题仍然存在的情况下(如果问题仍然存在)-我想在本地重现此问题以帮助您确定问题。但是您决定不需要我的帮助。好吧,经过8个小时,您取得了什么进展?您仍然认为您选择的策略有效吗?

连接需要为MySQL指定utf8mb4。 DOMDocument的内容是什么?

??是十六进制F09F9880,它应在任何utf8mb4_*归类的CHARACTER SET utf8mb4列中使用。

这是另一个链接:UTF-8字符有问题; 我看到的不是我存储的

如果所有其他方法均失败,请在建立连接后从PHP执行SET NAMES utf8mb4。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值