#查看当前登陆客户端字符集
show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 #客户端字符集 |
| character_set_connection | latin1 #连接字符集 |
| character_set_database | latin1 #数据库字符集,配置文件指定,或建库建表指定 |
| character_set_filesystem | binary |
| character_set_results | latin1 #返回结果字符集 |
| character_set_server | latin1 #服务器字符集 |
| character_set_system | utf8 |
| character_sets_dir | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
#查看表字符集
show create table d3306;方法1:
插入数据前,看看当前数据库字符集
show create database d3306;
每次插入数据前先执行如下(临时生效)
set names latin1;
方法2:
导入sql数据时增加参数
mysql -uroot -p123456 --default-character-set=latinl d3306
数据库外查看:
mysql -uroot -p123456 -e "set names latin1;select * from d3306.test;"
mysql -u root -p123456 -S /data/3306/mysql.sock -e "set names latin1;select * from d3306.student;"
方法3:(永久生效)
在配置文件里设置客户端及服务端相关参数
[client]
default-character-set=latin1
[mysqld]
default-character-set=latin1 适合5.1以前版本
character-set-server=latin1 适合5.5
show character set;
[root@A-host ~mysql -u root -p123456 -S /data/3306/mysql.sock -e "show character set;"
create database d3306 default character set utf8 collate utf8_general_ci;
更改生产线上MySQL数据字符集方案对已有的数据库想修改字符集不能直接通过
"alter database character set *" 或"alter table tablename character set *"
这两个命令都没有更新已有记录的字符集,而是只对新创建的表或者记录生效。
已经记录的字符集调整,必须先将数据导出,经过修改字符集后重新导入才可完成。
latin1 转 UTF8 总结
1、建库及建表的语句导出,sed批量修改改为utf8
2、导出所有mysql数据
3、修改mysql服务端和客户端编码为utf8
4、删除原有的库表及数据。
5、导入新的建库及建表的语句
6、导入mysql的所有数据
不乱码思想: 客户端,服务端,库,表,程序,统一字符集编码赞0
踩0
本文标签:MySQL
版权声明:若无特殊注明,本文为《橙子柠檬》原创,转载请保留文章出处。
本文链接:https://qinzc.me/post-116.html
正文到此结束