MySQL 4.1以后版本时显示乱码解决方案 - 安装设置 - 技术论坛

正在浏览:   1 名游客


 到底部   前一个主题   下一个主题  [无发表权] 请登录或者注册



MySQL 4.1以后版本时显示乱码解决方案
Support Team
注册日期:
2004/6/29 20:25
所属群组:
注册会员
技术文档组
ComSupp
帖子: 111
等级: 9; EXP: 55
HP : 0 / 213
MP : 37 / 1163
离线
从MySQL 4.1开始引入的多语言支持确实很棒,而且一些特性已经超过了其他的数据库系统。不过在测试过程中发现使用适用于MySQL 4.1之前的PHP语句操作MySQL数据库会造成乱码,即使是设置过了表字符集也是如此。
MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。

当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。
其实简单的方法是通过phpMyAdmin来设置。
设置下面几项:
1: 语言设置为 chinese (zh-utf-8)
2: MySQL 字符集: UTF-8 Unicode (utf8)
3: MySQL 连接校对: utf8_general_ci
4: 新增数据库和数据表的时候,整理项选择 utf8_general_ci
通过以上设置,在phpMyAdmin中操作和查询的时候,中文字符都不会乱码了。
但是你会发现,在php程序中用以前的sql语句查询出来的结果还是乱码,问题就出在connection连接层上。
解决方法是修改/class/database/mysqldatabase.php:
大约252行,添加@mysql_query("SET NAMES 'utf8'", $this->conn);
,修改后如下:

$this
->logger->stopTime('query_time');
            
$query_time $this->logger->dumpTime('query_time');
        }
        else {
            
//just execute the query
            
            
@mysql_query("SET NAMES 'utf8'"$this->conn); //add by yetist
            
            
$result mysql_query($sql$this->conn);
        }
         if ( 
$result ) {

2005/11/16 15:11
_________________
Open in new window
GTK+中国社区
应用扩展 工具箱


Re: MySQL 4.1以后版本时显示乱码解决方案
资深会员
注册日期:
2004/9/1 23:15
所属群组:
注册会员
帖子: 172
等级: 12; EXP: 17
HP : 0 / 279
MP : 57 / 1376
离线
正是我碰见的难题,谢谢了!

2005/11/17 21:08
应用扩展 工具箱



 回顶部   前一个主题   下一个主题

 [无发表权] 请登录或者注册


可以查看帖子.
不可发帖.
不可回复.
不可编辑自己的帖子.
不可删除自己的帖子.
不可发起投票调查.
不可在投票调查中投票.
不可上传附件.
不可不经审核直接发帖.

[高级搜索]