ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Mysql 5 数据库 中文乱码问题的解决

Mysql 5 数据库 中文乱码问题的解决

原创 Linux操作系统 作者:organist 时间:2012-05-08 15:50:32 0 删除 编辑
由于Mysql是从版本 4迁移到Version 5的,原来的字符集是latin1,现在是UTF8,这就遇到了经典的乱码问题,即使通过phpadmin来访问,也是一片纷乱,还好在前端的展现正常。

首先乱码是由于字符集的变化和混乱造成的。
[root@localhost plugins]# /mysql -hlocalhost -ueygle -p eygle
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1693469
Server version: 5.0.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show variables like '%char%';
+--------------------------+----------------------------------+
| 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       | /opt/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)
现在的字符集是utf8,但是由于原来是latin1的字符集,我使用latin1进行导出:
mysqldump -hlocalhost -ueygle -p --default-character-set=latin1 blog >blog.sql

这样导出之后,如果打开看,正文应当都是正常显示才对,然后更改字符集,将所有表的字符集设置改为utf8,在vim中的命令是:
:%s/latin1/utf8/g

再执行导入操作:
mysql -hlocalhost -ueygle -p eyglenew < blog.sql

这样我终于看到了久违的,正确的中文,现在的数据库字符集看起来是这个样子的:
mysql> show variables like '%char%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | latin1                           |
| character_set_connection | latin1                           |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | latin1                           |
| character_set_server     | latin1                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /opt/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

记录一下,供遇到此类情况的朋友参考。
==========================================================
最近也遇到一个类似的CASE:
mysqldump出来的SQL文件,使用了GBK编码,但是再用mysql 导入数据时,执行到某个表时,报SQL 语法错误。
但是在Windows平台下打开文件,文件格式正确。
后来修改了/etc/my.cnf文件,在[mysql]下边添加了
default_character_set=gbk
后保存,然后重启mysql service,再导入数据时,可以正常导入。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26953882/viewspace-723046/,如需转载,请注明出处,否则将追究法律责任。

下一篇: oracle rman command
请登录后发表评论 登录
全部评论

注册时间:2012-05-08

  • 博文量
    17
  • 访问量
    19560