解决Drupal (MySQL数据库) 升级中文乱码问题的一个办法
网上有许多关于MySQL中文乱码问题的帖子,归纳起来主要有三点:
1. mysql server本身设定问题,例如还停留在 latin1
2. mysql table 的语系设定问题(包含 character 与 collation)
3. 客戶端程序(例如 php) 的连接语系是设定问题
Drupal 4.6 的table为 latin1, 客戶端程序连接到数据库后,也未执行:mysql_query("SET NAMES 'utf8'"). 所以在升级前, 我将database和所有table的 character 与 collation都转换成utf8_general_ci ,而且确认Drupal 5.7客戶端程序连接到数据库后,执行了mysql_query("SET NAMES 'utf8'"). 但是升级后,中文内容变成了乱码。虽然花了许多时间网上查询,也没有找到解决的办法。
一个偶然机会发现,用UltraEdit 打开PhpMyAdmin输出的slq 文件,进行一次拷贝, 然后粘贴道一个新的文本文件中。删除数据库中table中的数据,用得到的新文本文件,通过PhpMyAdmin输入所有的数据。乱码问题得以解决。
道理很简单,在拷贝和粘贴过程中, Windows XP (英文版,安装了东南亚文字支持功能)将latin1 编码自动转换成了UTF-8编码了。所见到现实虽然已经是UTF-8编码,但Windows只做了转换,不会修改原文件编码,更不能正常显示了。所以拷贝的是UTF-8,新存文件自然可以正常显示和更新数据库了。在中文处理过程中,不一定要相信“眼见为实”,如果观察Windows现实的UTF-8文本,Windows又将其转换成了UTF-16 Little Endian 编码了。
- webmaster 的blog
- 要发表评论,请先登录 或 注册
- 986 次阅读
