MySQL微信表情包特殊字符问题

在微信登录功能使用MySQL数据库时,存在表情包特殊字符无法写入问题

Posted by Sunfy on 2020-11-23
Words 492 and Reading Time 2 Minutes
Viewed Times
Viewed Times
Visitors In Total

问题描述

微信用户昵称问题存在特殊字符时,无法保存。因为utf8只能保存三个字节,但是微信表情很多都是四个字节,故无法保存。

解决方式

将微信字符集由utf8 设置为 utf8mb4

mysql字符集设置

window

此处设置字符集与数据库安装路径不同,注意区别

MySQL5.7修改字符集

本人安装的mysql版本是5.7.20,安装好mysql后就要对字符集进行修改了,于是照着网上的大部分教程说的去安装目录找一个my-default.ini文件,然后重命名为my.ini,再对其进修改字符集即可,具体如下:

1、mysql5.7.20的my.ini文件不在安装目录下,如果你是默认安装mysql的,那么它的my.ini文件在隐藏文件夹C:\ProgramData\MySQL\MySQL Server 5.7下

2、对my.ini文件进行修改,修改前请备份好一份。

在该my.ini文件下进行配置修改 :

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8
collation-server = utf8_unicode_ci
init_connect=’SET NAMES utf8’

3、修改my.ini文件后,保存,再重启mysql服务。计算机——右键——管理——服务,找到mysql57,对其右键停止,再启动即可

4、打开终端,登陆mysql后再查看字符集:show variables like ‘character%’; 此时更改字符集成功。

Linux

修改mysql字符集
查看字符集 show variables like ‘%character%’;

主要关注character_set_server的字符集 默认为latin1不支持中文,需要修改为utf8

vim /etc/my.cnf

1、在[client]字段里加入default-character-set=utf8,如下:

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8

2、在[mysqld]字段里加入character-set-server=utf8,(注意KEY不要写错,网上很多文章都是写default-character-set是错的)如下:

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8

3、在[mysql]字段里加入default-character-set=utf8,如下:

[mysql]
no-auto-rehash
default-character-set=utf8

完成后重启 service mysql restart


Copyright 2021 sunfy.top ALL Rights Reserved

...

...

00:00
00:00