我使用的是mysql 5.5.10,它的character_sets是
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
Run Code Online (Sandbox Code Playgroud)
我从utf8为iOS5的表情符号改变了utf8mb4.它们由4byte代码表示.
但当我插入3个笑脸表情符号时,'???' 在mysql中.
它们是3F 3F 3F(Hex).
我可以很好地存储iOS4的表情符号,但不能存储iOS5的表情符号.
我怎么能存储iOS5的表情符号?
请帮我.
我试图将表情符号保存到数据库记录,但每次都没有正确保存.我已经参考了如何在我的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;
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,它正在改变数据库中的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 ;
Run Code Online (Sandbox Code Playgroud)
使用以下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 …Run Code Online (Sandbox Code Playgroud)