
mysql
5.5.3
开始,mysql
支持一种
utf8mb4
的字符集,这个字符集能够支持
4
字节的
utf8
编码的字符。
utf8mb4
字符集能够完美地向下兼容
utf8
字符串。在数据存储方面,当一个普通中文字符存入数据库时仍然占用
3
个字节,在存入一个
unified
emoji
表情的时候,它会自动占用
4
个字节。所以在输入输出时都不会存在乱码的问题了。由于
utf8mb4
是
utf8
的超集,从
utf8
升级到
utf8mb4
不会有任何问题,直接升级即可;如果从别的字符集如
gb2312
或者
gbk
转化而来,一定要先备份数据库。然后,修改
mysql
的配置文件
/etc/my.cnf,修改连接默认字符集为
utf8mb4
,然后在连接数据库以后首先执行一句
sql:
set
names
utf8mb4。
1.
修改my.cnf
或
my.ini
[mysqld]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4
修改后重启mysql
登陆mysql,
show
variables
like
'character%'
可以查看编码是否已经修改成功。
2、修改数据库和数据表为相应的
utf8mb4
格式。
alter
table
table_name
convert
to
character
set
utf8mb4
collate
utf8mb4_bin
3、在代码中,连接数据库成功后,执行
"set
names
utf8mb4"
1、桌面上右击 计算机,选择“管理”, 选择“服务和应用程序”---“服务”, 在里面找到MySQL56的服务。
2、右击 MySQL服务,查看“属性”:往后拖一下,找到—default-file下图中画框部分,这里指明了MySQL启动的时候要加载的配置文件.
3、 找到该路径下的配置文件,进行修改。
4、 具体修改内容:
文字:
[client]
port=3306
default-character-set=utf8mb4
[mysql]
port=3306
default-character-set=utf8mb4
[mysqld]
port=3306
character-set-client-handshake= FALSE
character-set-server= utf8mb4
collation-server= utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
5、 然后重启MySQL56服务。
6、 在运行里面,找到并打开mysql command line,使用以下命令查看是否生效。SHOWVARIABLES WHERE Variable_name LIKE 'character/_set/_%' OR Variable_name LIKE'collation%'
看到下面这个画面就说明生效了:
7、以为这样就完了吗?No,即使是这样我们无论是在mysql workbench还是通过python+mysqldb建立的utf8mb4数据库其实还是utf-8的,也正因如此,我们的emoj字符才一直不能插入到数据库中。
即使建立的数据库是utf8mb4的,我们看到这个数据库还是utf8的。
所以我们还需要继续实验,仔细看修改配置文件里面有一句:init_connect='SETNAMES utf8mb4',那我可以拿来用到数据库中。
果然,发现加上“SET NAMES utf8mb4”这句以后,数据库变成了utf8mb4.:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)