首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > MySQL 4.1x 中文乱码问题
【标  题】:MySQL 4.1x 中文乱码问题
【关键字】:MySQL,4.1x
【来  源】:http://www.cublog.cn/u/21012/showart.php?id=150795

MySQL 4.1x 中文乱码问题

在多数host装的还是MySQL 4.0x 版本以下,如果升级到了4.1x 或者移动到使用4.1x 的主机上,估计会遇到一些问题。我在powweb上遇到了两个问题。

一是数据导入。在phpMyAdmin内导入后,发现中文变成了乱码。搜索学习后,了解到需要设置数据库的collation (校勘),如果你的数据库是utf-8的,设置为utf8_general_ci就可以了。

二是,即使正确导入了,在phpMyAdmin里也能正确显示,但WordPress页面上显示的文章内容都是“???”,而模板里面的汉字都能正常显示。这让我头疼了很久。搜索到Windix’s Weblog上有对此的说明:

从MySQL 4.1开始引入的多语言支持确实很棒,而且一些特性已经超过了其他的数据库系统。不过我在测试过程中发现使用适用于MySQL 4.1之前的PHP语句操作MySQL数据库会造成乱码,即使是设置过了表字符集也是如此。我读了一下新的MySQL在线手册中第十章”Character Set Support“后终于找到了解决方法并测试通过。

MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。

当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:

SET NAMES ‘utf8′;

但是我依旧不知道,如何,在何处让WordPress运行这个SQL语句。后来在阿修的部落格上查到办法:

為著解決這個問題必須去修改wp-includes/wp-db.php內的資料連線設定。詳細的修改方式是這樣的:

$this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);
//加上下面這行
$this->query("SET NAMES 'utf8'");

这样子终于能正常显示中文的WordPress了。虽然后来还是没用Powweb,但是觉得这个经验会对别人有用。记得有人用email和我讨论过这样子的中文显示问题,但是我那时哪里知道问题出在MySQL 4.1x上。

还有,4.1x的数据库不向下兼容,所以升级的时候要三思啊。

黑白·简单·人生:【上一篇】
[转贴]Linux下推荐的常用应用程序列表:【下一篇】
【相关文章】
  • apache+mysql+php+snmp+rrdtool+cacti
  • 一种网络MySQL数据库无法连接的错误排除
  • Mysql ODBC 连接Mysql参数的问题
  • [Mysql]Null值的更新8/3
  • mysql好的网站
  • mysql 安装
  • mysql5.1 install for RH9
  • JSP+MySQL乱码问题 (2)
  • JSP+MySQL乱码问题 (1)
  • [MySQL] Client does not support authentication...
  • 【随机文章】
  • Asp备份与恢复SQL Server数据库
  • 让VMWare Workstation成为服务
  • 看看我的成果,hiahia!~
  • 获得文件最后修改日期
  • TC2.0中怎样调用汇编程序(01)
  • 替换硬盘之二
  • Struts常见异常信息和解决方法
  • 企业流程重组之数据分析概述
  • FreeHand 位图裁切工具
  • msmq两个网域之间消息传输与接收测试总结
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.