Skip to content

Instantly share code, notes, and snippets.

@liuyix
Last active December 30, 2015 16:19
Show Gist options
  • Save liuyix/7853888 to your computer and use it in GitHub Desktop.
Save liuyix/7853888 to your computer and use it in GitHub Desktop.
mysql中文编码

所有的程序、代码都要考虑国际化问题!否则就会遇到乱码的情况。mysql默认的编码都是latin1,因此如果在配置mysql、建库等操作使用默认的话,乱码问题必然会遇到。

编码设置的几个地方:

  • my.cnf
  • mysql client连接
  • sqlalchemy连接数据库
  • create database/table时指定编码

mysql可用的collationshow collation

关于中文使用哪种collation: 建议选择 utf8_unicode_ci,原因参考:whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci via stackoverflow

my.cnf 配置

[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
collation-server=utf8_unicode_ci

之后建立database, table都默认utf8了。

create database 指定character set/ alter database character set

mysql manual: http://dev.mysql.com/doc/refman/5.5/en/charset-database.html

若不能修改mysql server配置,则可以使用更保险的方法: create database db_name default character set utf8 default collate utf8_unicode_ci;

alter database db_name default character set utf8 default collate utf8_unicode_ci;

create table 指定 character set

若连database都无法更改,也可以创建/修改表的编码,mysql manual: http://dev.mysql.com/doc/refman/5.5/en/charset-table.html

create table table_name (...) default character set utf8 collate utf8_unicode_ci `alter table table_name (...) default character set utf8 collate utf8_unicode_ci``

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment