2017-10-09 172 views
-6

我试图将表情符号保存到数据库记录,但每次都没有正确保存。 我已经提到这How to store Emoji Character in My SQL Database但仍然无法正常工作。
根据上述问题的解决方案,我尝试将字符集从utf8更改为utf8mb4,并将其从utf8mb4_bin中排序。

我尝试了一切,如重置为默认值,然后在数据库表中更改它。我尝试过utf8mb4_unicode_ci,utf8_unicode_ci和utf8mb4_bin,但它不起作用。

我正在使用MySQL 5.6版本。而我改变的整理与下面的查询
表情符号字符()在MySQL版本5.6中不适用于utf8mb4_bin

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 = '<meta http-equiv="content-type" content="text/html; charset=utf-8">' 
       + $strWithEmoji; 
$this->save($fullContent); // Function for saving into database 


我不知道确切的豪w很多字节正在存储,但我试图只保存 这个表情符号“”,并将它存储为4个问号(????)。

我试图从下面的链接,所有的解决方案,但并没有为我工作:
How to store Emoji Character in My SQL Database
UTF-8 all the way through
The ultimate emoji encoding scheme

+0

@Liam我尝试了所有已经问过的解决方案,但它不起作用 – KRY

+1

2天前您几乎没有添加任何原始问题。请不要多次提问同一个问题。这不起作用不是问题。 – Liam

+0

@Liam问题被删除 – KRY

回答

3

连接需要指定utf8mb4到MySQL。 DOMDocument涵盖什么?

是十六进制的F09F9880,它应该在CHARACTER SET utf8mb4的列中与任何utf8mb4_*归类一起工作。

这里是另一个链接:Trouble with UTF-8 characters; what I see is not what I stored

如果一切都失败,在建立连接后,执行从PHP SET NAMES utf8mb4

相关问题