首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Emoji存储在MySQL中

问将Emoji存储在MySQL中
EN

Stack Overflow用户
提问于 2015-04-16 17:09:19
回答 1查看 956关注 0票数 0

我现在知道,为了在MySQL中正确地存储表情符号,必须将编码和排序规则设置为“utf8mb4”。问题是,我已经在DB中插入了很多行,而表没有正确的编码和排序规则。行中的当前信息是否可以用于更新每一行,以使表情符号出现?

我将排序规则和编码更改为正确的值。但是,我似乎做不到

代码语言:javascript
复制
 $sql = "SELECT * FROM users";
 $result = mysqli_query($con, $sql);
 $count = mysqli_num_rows($result);
 $i = 0;

 while($row = mysqli_fetch_array($result)) { 
     $id[$i] = $row['id'];
     $bio[$i] = $row['bio'];

    $i++;
} 

for($i=0;$i<$count;$i++) {
    $sql = "UPDATE users SET bio = '".$bio[$i]."' WHERE id = '".$id[$i]."'";
    mysqli_query($con, $sql);   
}

我希望只查询所有的行并更新每个行,因为我有了正确的设置。但是,即使在更新每一行之后,表情符号也不会出现。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-16 18:37:06

假设您正确地设置了数据库、表和列的编码和排序规则属性,那么就不需要查询所有行并重新更新它们。

第一个简单的尝试是通过添加以下内容来指定PHP客户端连接中的字符集:

代码语言:javascript
复制
mysqli_set_charset($your_mysqli_connect_link, 'utf8mb4');

在进行任何mysqli_query()调用之前。

现在,确保服务器端也正确设置了所有字符集和排序规则属性。在CLI上试试这个:

代码语言:javascript
复制
mysql> 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 |
+--------------------------+--------------------+

确保您的/etc/my.conf具有所有正确的配置:

代码语言:javascript
复制
[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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29681594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档