MySQL乱码问题及字符集实
MySQL插入中文数据乱码问题
MySQL数据库插入中文乱码案例
MySQL中添加中文数据乱码演示
>create database oldboy default character set latin1;
>show create database oldboy\G
>use oldboy;
>create table student (id int(4) not null auto_increment,name varchar(20) not null,primary key (id));
>show create table student\G
>insert into student values (1,'oldboy'),(2,'oldgirl'),(3,'inca'),(4,'zuma'),(5,'kaka');
>select * from student;
>insert into student values(6,'老男孩');
>select * from student;
MySQL命令行插入中文数据不乱码实战1
- 查看建表语句,要特别注意建表语句结尾的latin1
>show create table student\G
- 设置MySQL客户端的字符集和建表的字符集latin1一致
>set names latin1; <==设置字符集为插入数据的表的字符集,然后再插入中文测试。
- 继续插入一条中文测试
>insert into student values(7,'老男孩'); <==Linux命令行的字符集也要调整才行
>select * from student;
MySQL命令行插入中文数据不乱码实战2
- 将要更新的多条SQL语句放在文本文件如test.sql所示:
#cat test.sql
set names latin1;
insert into student values(8,'老男孩');
注意,务必加入set names latin1,确保插入数据不乱码。
- 在MySQL命令行通过source调用test.sql文本插入数据
>source test.sql
>select * from student;
通过MySQL命令加字符集参数导入数据解决乱码3
- 将要更新的多条SQL语句放在文本文件中,注意,此次语句不带set names latin1
#cat test.sql
insert into student values(9,'张三');
- 通过MySQL命令加入字符集参数指定latin1字符集导入test.sql语句
#mysql -uroot -p'oldboy123' --defualt-character-set=latin1 oldboy < test.sql
- 通过-e参数在MySQL库外查看插入情况
#mysql -uroot -p'oldboy123' -e select * from oldboy.student
MySQL不乱码5种方法及不乱码根源深入详解
方法(1):登录MySQL,先做‘set names latin1‘,然后再执行更新语句或执行语句文件。
方法(2):在SQL文件中指定set name latin1;然后登录mysql通过以下命令执行
>source test.sql
方法(3):在SQL文件中指定set name latin1;然后通过mysql命令导入数据
#mysql -uroot -p'oldboy123' oldboy < test.sql
#mysql -uroot -p'oldboy123' -e “set names latin1;select * from oldboy.student
方法(4):通过指定MySQL命令的字符集参数default-character-set=latin1
#mysql -uroot -p'oldboy123' --defualt-character-set=latin1 oldboy < test.sql
方法(5):在配置文件里设置客户端及服务端相关参数
更改my.cnf客户端模块参数,可以实现set names latin1的效果,并且永久生效f
[client]
default-character-set=latin1
提示:无需重启服务,退出重新登录就生效,相当于set names latin1
更改服务端字符集简单办法:
[mysql]
default-character-set=latin1 适合5.1及以前版本
character-set-server=latin1 适合5.5
补充
中英混合的建议使用UTF8
Linux字符集修改位置:
#cat /etc/sysconfig/i18n
LANG="zh_CN.utf8"
MySQL客户端
临时:set names utf8
永久:更改my.cnf客户端模块参数,可以实现set names utf8的效果,并且永久生效f
MySQL服务端
[mysql]
default-character-set=utf8 适合5.1及以前版本
character-set-server=utf8 适合5.5
MySQL库
>create database oldboy default character set utf8 collate utf8_general_ci;
>show charater set <==查看支持的字符集及校对规则
MySQL表
>create table .... engine=InnoDB auto_increment=10 default charset=utf8
程序
简体 UTF8
http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
set names utf8