MySQL: set names utf8
set names utf8 是用于设置编码,可以再在建数据库的时候设置,也可以在创建表的时候设置,或只是对部分字段进行设置,而且在设置编码的时候,这些地方最好是一致的,这样能最大程度上避免数据记录出现乱码。执行SET NAMES utf8的效果等同于同时设定如下:
SET character_set_client='utf8';
SET character_set_connection='utf8';
SET character_set_results='utf8';
set names utf8 指定了客户端和服务器之间传递字符的编码规则为UTF8。
避免创建数据库及表出现中文乱码,在创建数据库和建表的时候使用相同的编码格式
1、创建数据库的时候:
CREATE DATABASE IF NOT EXISTS `test`
CHARACTER SET 'utf8';
2、建表的时候
CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 查看默认的编码格式:
mysql> show variables like "%char%";
+--------------------------+---------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files (x86)\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like "%char%";
+--------------------------+---------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files (x86)\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
注:以前2个来确定,可以使用set names utf8,set names gbk设置默认的编码格式