IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

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

Oracle Life 2010-06-02 23:06:55 累计浏览 2,770 次
本机暂存

昨天折腾了一下自己的网站,试图进行一些迁移工作,这其中遇到的首要问题是Mysql的乱码问题。

    由于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)

    记录一下,供遇到此类情况的朋友参考。

同分类推荐文章

  1. 第七章 事务 (2026-04-07 08:00:00)
  2. 第六章:分区 (2026-03-29 08:00:00)
  3. Neko Master: 从 0 到 1K+ Star 的 Vibe Coding 实践 (2026-03-01 08:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,184)
  2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,341)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,100)
  4. Mysql监控指南 (累计阅读 21,242)
  5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,245)
  6. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 12,999)
  7. 15个最好的免费开源电子商务平台 (累计阅读 12,475)
  8. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,591)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,516)
  10. 深入浅出INNODB MVCC机制与原理 (累计阅读 9,635)