方法1:
登录mysql,先做set names latin1,然后在执行更新语句或执行语句文件
mysql> set names latin1;
方法2:
在sql文件中指定set names latin1;然后登录mysql,通过如下命令执行
mysql> source test.sql;
方法3:
在sql文件中指定set names latin1;然后通过mysql命令导入数据
mysql -uroot -p123456 test < test.sql
mysql -uroot -p123456 test -e "set names latin1;select * from test.test;"
方法4:
通过指定mysql命令的字符集参数实现--default-character-set=latin1
cat test.sql
INSERT INTO test VALUES(9,'张三');
mysql -uroot -p123456 --default-character-set='latin1' test < test.sql
方法5:
在配置文件里设置客户端及服务端相关参数
[client]
default-character-set=latin1
提示:无需重启服务,退出登录就生效
更改my.cnf参数
[mysqld]
default-character-set=latin1 适合5.1及以前版本
character-set-server=latin1 适合5.5
确保服务端和客户端字符集相同
方法1:
登录mysql,先做set names latin1,然后在执行更新语句或执行语句文件
mysql> set names latin1;
方法2:
在sql文件中指定set names latin1;然后登录mysql,通过如下命令执行
mysql> source test.sql;
方法3:
在sql文件中指定set names latin1;然后通过mysql命令导入数据
mysql -uroot -p123456 test < test.sql
mysql -uroot -p123456 test -e "set names latin1;select * from test.test;"
方法4:
通过指定mysql命令的字符集参数实现--default-character-set=latin1
cat test.sql
INSERT INTO test VALUES(9,'张三');
mysql -uroot -p123456 --default-character-set='latin1' test < test.sql
方法5:
在配置文件里设置客户端及服务端相关参数
[client]
default-character-set=latin1
提示:无需重启服务,退出登录就生效
更改my.cnf参数
[mysqld]
default-character-set=latin1 适合5.1及以前版本
character-set-server=latin1 适合5.5
确保服务端和客户端字符集相同
1、linux系统服务端
cat /etc/sysconfig/i18n
LANG="zh_CN.utf8"
[root@localhost 3306]# echo $LANG
zh_CN.UTF-8
提示:linux客户端也要更改为UTF-8
2、Mysql数据库的客户端
临时:
mysql> set names utf8; 或者启动时指定 mysql -uroot -p123456 --default-character-set=utf8
永久:
更改my.cnf客户端的参数,可以实现set names utf8的效果,并且永久生效
[client]
default-character-set=utf8
提示:配置文件修改无需重启
3、Mysql服务端
更改my.cnf
[mysqld]
default-character-set=utf8 适合5.1及以前版本
character-set-server=utf8 适合5.5
4、Mysql数据库中建库建表指定字符集
create database test default character set utf8 collate utf8_general_ci;
5、开发程序字符集:
简体UTF8
#对于已有的数据库向修改字符集不能直接通过"alter database character set ..." 或 "alter table tablename character set ..." 修改,这两个命令都没有更新已有记录的字符集
而只是对于新创建的表或者记录生效,已经有记录的字符集的调整,必须要先将数据导出,经过修改字符集后重新导入后才可完成。
下面模拟将latin1字符集的数据库修改成GBK字符集的实际过程;
1、导出表结构
mysqldump -uroot -p --default-character-set=latin1 -d dbname >alltabl.sql ##--default-character-set=gbk 表示以gbk字符集进行连接 -d 只导表结构
2、编辑alltable.sql将latin1改成gbk
3、确保数据库不再更新,导出所有数据
mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 dbname > alldata.sql
参数说明:
--quick:用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有行
--no-create-info : 不创建create table 语句
--extended-insert : 使用包括几个values列表的多行insert 语法,这样文件更小,IO也小,导入数据时会非常快
--default-character-set=latin #按照原有的字符集导出数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码
4、打开alldata.sql 将 set names latin1 修改成set names gbk
5、建库
create database dbname default charset gbk;
6、创建表,执行alldata.sql
mysql -uroot -p dbname < alltable.sql
7、导入数据
mysql -uroot -p dbname < alldata.sql