最近在部署MySQL,遇到了字符编码问题,这篇文章是一些主要是解决关于数据库支持中文的编码的问题。当然,可以选择GBK等编码,不过更好的选择当然是选择国际通用的utf-8编码。下面是一些将数据库编码改为utf-8编码的方法。
更改数据库编码
一般都想修改整个数据库使用的编码,就是更改数据库的编码,首先可以先查询当前数据库所有的字符的编码:
mysql> show variables like 'character%';
默认的查询结果可能是这样的:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | latin1 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
也就是默认的是latin1
编码,是不支持中文的。所以我们应该将数据库的编码改成utf-8
,在数据库中是utf8
。
我们可以选择更改数据库的配置文件my.cnf
,然后将数据库服务重启才能生效,通常需要更改my.cnf
的这两个地方。
- [client]下,加上
default-character-set=utf8
,或者是character-set-client=utf8
; - [mysqld]下,加上
character-set-server=utf8
。
当然,亲测这个方法或许还是不能把所有的编码改成utf8,或许还应该吧其他几个参数也加上character-set-client=utf8
,不过没有试过。不过还有一种方式,如果需要把以上全改成utf8,可以通过命令行更改,但据说用命令行更改的编码如果MySQL重启就没用了。暂时未测,可以根据实际情况选择方法,以下贴出命令行方式:
mysql> set character_set_client=utf8 ;
mysql> set character_set_connection=utf8 ;
mysql> set character_set_database=utf8 ;
mysql> set character_set_database=utf8 ;
mysql> set character_set_results=utf8 ;
mysql> set character_set_server=utf8 ;
mysql> set character_set_system=utf8 ;
之后再用上文说的查询数据库方式再次查询数据库的编码,就会得到如下结果:
+--------------------------+----------------------------+
| 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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
就将所有的编码改成utf8
了。
MySQL命令行修改数据库编码
现在,写一些其他的命令行修改编码的方式:
- 修改数据库字符编码(某个数据database)
mysql> alter database 数据库名 character set utf8 ;
- 在创建数据库时,指定数据库的指定字符编码
mysql> create database 数据库名 character set utf8 ;
- 修改数据库中某个table 的编码
mysql> alter table table名 character set utf8 ;
添加几个常用的数据库使用指令:
- 关闭数据库服务:```mysqladmin shutdown -uroot -p[password]```
- 启动数据库:`mysql -uroot -p[password]`
或者:
- 启动命令:`/etc/init.t/mysqld start`
- 连接数据库:`/etc/init.d/mysqld stop`
参考互联网知识,若有无意侵权请联系本人删除。