修改mysql数据库默认编码_深入浅出修改mysql数据库的默认编码方式

修改my.ini文件

加上

default-character-set=gb2312

设定数据库字符集

alter database da_name default character set

'charset'

1)设置数据库编码 /etc/my.cnf

[mysqld]

default-character-set=gbk

...

[client]

default-character-set=gbk

---------------------------------------

2)按字符集导出

$mysqldump -u root -p dbname --default-character-set=gbk >

a.sql;

3)查看SQL文件的编码

[root@localhost gethtml]# file a.sql

a.sql: UTF-8 Unicode ...

[root@localhost gethtml]# iconv -f utf-8 -t gbk a.sql >

a2.sql

[root@localhost gethtml]# file a2.sql

a2.sql: Non-ISO extended-ASCII

English text 这时已经是gbk的编码了

3)导入

查看数据库服务和客户端字符集

mysql> status;

Server

characterset: gbk

Db characterset: gbk

Client

characterset: latin1

Conn.

characterset: latin1

mysql> set names 'gbk'; //这样

mysql> status;

Server characterset: gbk

Db characterset: gbk

Client

characterset: gbk

Conn.

characterset: gbk

这时才能导数据

mysql> source a.sql;

----------------------------------------------------------------------------------

单独设置某个数据库:

alter database testdb character set utf8;

查看mysql支持的编码:

show character set;

查看系统的字符集和排序方式的设定可以通过下面的两条命令:

mysql> SHOW VARIABLES LIKE

''character_set_%'';

LINUX 如下:

1)导出数据

[root@www.cnscn.org ~]$ mysqldump -u root -p dbname

--default-character-set=gbk > base_user.sql;

2)查看导出的sql文件的编码

[root@www.cnscn.org ~]$ file base_user.sql

base_user.sql: UTF-8 Unicode text, with very long lines

3)转成要用的编码

[root@www.cnscn.org ~]$ iconv -f utf-8 -t gbk base_user.sql

>base_user_gbk.sql

4)连接数据库并查看当前库的编码

[root@www.cnscn.org ~]$ mysql -uroot

mysql> use testdb;

mysql> status;

Server

characterset: latin1

Db characterset: gbk

Client

characterset: latin1

Conn.

characterset: latin1

5)设置成需要的编码

mysql>set names 'gbk';

6)查看现在的编码

mysql> status;

Server

characterset: latin1

Db characterset: gbk

Client

characterset: gbk

Conn.

characterset: gbk

7)导入我们转换成gbk后的文件

mysql> source base_user_gbk.sql;

——————————————————————————————————————

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了,创建新表格的时候无需再次设置。需要注意的是,当前数据库中已经存在的数据仍保留现有的编码方式,因此需要自行转码,方法在网上有很多,不再赘述。

以上的方法保证了数据为utf8编码,在mysql Query Browser

可视化工具中查看没有问题,但是以dos方式登陆数据库,select到的依然是乱码,这时可以通过改变命令行客户端字符集来正确显示中文。改成BGK编码即可正常查看中文,命令如下:

mysql> charset GBK;

这时再用“mysql> show variables like '%set%';”

查看字符集变量,部分已经变成了GBK,此时查询会在命令行正确显示中文结果。

三、临时改变编码形式

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

QueryBrowser工具来创建表。

1. 首先确定数据库的字符集。在数据库名上右键选择create new table,在Edit

Table 的Table OPtions选项卡中,将CharSet 设为指定的字符集,比如latin1;

2. 然后再去创建和编辑各列的字符集。在编辑列时,下方的column details

选项卡中可以查看和修改该列的字符集,即column charset

栏。如果保持默认,将与开始指定的数据库字符集相同,在这里是latin1;如果重新选择其他的编码,那么该列就具会按照新选择的字符集编码。

这里要注意一个问题,列默认的字符集是与首次指定的数据库字符集相同的,如果后来你改变了该数据库的字符集(在 table

options

选项卡中修改),比如改成了utf8,那么它包含的列的字符集是不会改变的,只能单独去修改每列的字符集。(也就是说,列的字符集只有在创建的时候继承数

据库的编码,之后他就是独立的。)

-------------------------------------- for example:

create database plus_data DEFAULT CHARACTER SET utf8;

create table uin_extract(

task_id int

not null auto_increment PRIMARY KEY,

user_name

varchar(30),

task_name

varchar(50),

create_time

DATETIME,

finish_time

datetime,

finish_flag

TINYINT(1),

dow_url

varchar(100),

del_cmd

varchar(100)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值