修改MYSQL默认编码为UTF8[转载+个人总结]

来源:互联网 发布:帝范译文非知之难 编辑:程序博客网 时间:2024/05/16 08:06
1转载部分
MySQL的默认编码是Latin1,不支持中文,那么如何修改MySQL的默认编码呢,下面以UTF-8为例来说明

需要注意的是,要修改的地方非常多,相应的修改方法也很多。下面是一种最简单最彻底的方法:

一、Windows
1、中止MySQL服务
2、在MySQL的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可
3、打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
4、启动MySQL服务

二、Linux
1、中止MySQL服务(bin/mysqladmin -u root shutdown)
2、在/etc/下找到my.cnf,如果没有就把MySQL的安装目录下的support-files目录下的my-medium.cnf复制到/etc/下并改名为my.cnf即可
3、打开my.cnf以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
4、启动MySQL服务(bin/mysqld_safe &)

非常简单,这样的修改一劳永逸,今后MySQL一切相关的默认编码均为UTF-8了,创建新表格的时候无需再次设置

需要注意的是,当前数据库中已经存在的数据仍保留现有的编码方式,因此需要自行转码,方法在网上有很多,不再赘述

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1523590


2

以上的方法保证了数据为utf8编码,在mysql Query Browser 可视化工具中查看没有问题,

但是以dos方式登陆数据库,select到的依然是乱码,这时可以通过改变命令行客户端字符集来

正确显示中文。 mysql> charset GBK;

这时用 mysql> show variables like '%set%';查看字符集变量,部分已经变成了GBK,此时查询会在命令行正确显示结果。

3 上面的方法是设置为默认,如果要临时改变字符集,可以用可视化操作,也可以通过代码指定。

3.1 可视化操作: 使用 mysql QueryBrowser工具来创建表,在数据库名上右键选择create new table,   首先在Edit Table 的Table OPtions选项卡中,将CharSet 设为指定的字符集。比如latin1. 然后再去创建和编辑各列。在编辑列时,下方的column details 选项卡中可以查看和修改该列的字符集,即column charset 栏。如果保持默认,将与开始指定的数据库字符集相同,在这里是latin1.当然也可以修改。
这里要注意一个问题,列默认的字符集是与首次指定的数据库字符集相同的,如果后来你改变了该数据库的字符集(在 table options 选项卡中修改),比如改成了utf8,那么它包含的列的字符集是不会改变的,只能单独去修改每列的字符集。

----------------------------
3.2 代码创建表,同时指定字符集. 这里直接把MYSQL文档的说明拿来了。可以参照黑体实例来写。
这些是创建数据库时指定默认编码和核对编码。

10.3.3. Table Character Set and Collation

Every table has a table character set and a table collation. The CREATE TABLE and ALTER TABLE statements have optional clauses for specifying the table character set and collation:

CREATE TABLE tbl_name (column_list)    [[DEFAULT] CHARACTER SET charset_name] [COLLATE collation_name]]ALTER TABLE tbl_name    [[DEFAULT] CHARACTER SET charset_name] [COLLATE collation_name]

Example:

CREATE TABLE t1 ( ... ) CHARACTER SET latin1 COLLATE latin1_danish_ci;

MySQL chooses the table character set and collation in the following manner:

  • If both CHARACTER SET X and COLLATE Y were specified, then character set X and collation Y.

  • If CHARACTER SET X was specified without COLLATE, then character set X and its default collation.

  • If COLLATE Y was specified without CHARACTER SET, then the character set associated with Y and collationY.

  • Otherwise, the database character set and collation.

The table character set and collation are used as default values if the column character set and collation are not specified in individual column definitions. The table character set and collation are MySQL extensions; there are no such things in standard SQL.

下面是如何修改列的编码


10.3.4. Column Character Set and Collation

Every “character” column (that is, a column of type CHARVARCHAR, or TEXT) has a column character set and a column collation. Column definition syntax has optional clauses for specifying the column character set and collation:

col_name {CHAR | VARCHAR | TEXT} (col_length)    [CHARACTER SET charset_name] [COLLATE collation_name]

Example:

CREATE TABLE Table1(    column1 VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_german1_ci);-------------------------简单总结到此。具体MySql的语法要参见官方文档了。在其MySQL Manual 文档的SQL Statement Syntax中有具体的语法。
原创粉丝点击