mysql 字符编码问题
问题描述
当数据库的编码非utf-8 时,此时插入数据为中文时,因为编码问题会报错无法写入数据。
更改配置文件配置解决
编辑配置文件
[mysqld]
character-set-server=utf8
#collation-server=utf8_general_ci
default-character-set = utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysql.server]
default-character-set = utf8
[mysqld_safe]
default-character-set = utf8
重启mysql 数据库
查看更改后效果
mysql> show variables like '%char%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
注:character_set_database 必须为utf8 才可以。
创建数据库时指定数据库的编码格式
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
额外说明
对于之前编码格式不是utf8时创建的数据库,此时再更改配置文件中的编码格式为utf8 则对之前的数据库不生效,而且数据库中有数据时更改容易造成数据错误。只能创建新的数据库指定编码格式,之后采用新数据库。