支持Emoji表情图标在iOS与C#之间通讯

让C#支持Emoji表情图标存储入Mysql中,SqlServer没问题。

IOS5以上的版本表情已经从SoftBank改成Unified,Unified是占四个字节的,SoftBank是占三个字节。所以低版本的Mysql不支持,得

Mysql得5.5.3以上的版本才支持Utf8mb4字符集,只有Utf8mb4字符集才支持4个字节存储。

1:先改My.cnf文件

一般在这个地方: /etc/my.cnf,加上或修改成:

[client]
default-character-set = utf8mb4
 
[mysql]
default-character-set = utf8mb4
 
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

检查

MariaDB> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| 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               |
| collation_connection     | utf8mb4_unicode_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+
10 rows in set (0.01 sec)

如果不一样,要配到一样。

2:你的数据库的编码:

# For each database:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;
# For each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# For each column:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

这一句注意改三个地方:列名要对,列的类型要对,列的长度得一模一样。缺一不可。

然后你要修复一下表:

REPAIR TABLE table_name;
OPTIMIZE TABLE table_name;

3:调整你的C#代码,连接字符串加上一条:charset=utf8; 或者charset=utf8mb4; 

4:在你的插入或更新语句中的前面加上一条:

 

SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';

如此大功靠成,恭喜。