设为首页收藏本站

数码鹭岛论坛

 找回密码
 注-册

QQ登录

只需一步,快速开始

搜索
查看: 7127|回复: 0
打印 上一主题 下一主题

Mysql4.1&mysql5 中文乱码的彻底解决及应用的一些注意事项

[复制链接]
跳转到指定楼层
1#
发表于 2008-11-26 00:57:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一. 自从mysql4.1开始,mysql对中文的支持问题是比较烦人的,怎么弄都乱码,如今mysql5 据说是mysql的新纪元,但从官方下载安装的mysql5仍存在乱码现象,这里就是针对此现象做的讨论:

建议最好是下载mysql的源码进行编译,这是由于官方编译的mysql的默认支持编码是latin字符集,所以中文字符在数据库里查看的时候看到的是乱码。编译MySQL时使用withcharset=编码,可以方便地把mysql编译成该编码形式,这样MySQL就会直接支持中文查找和排序,--with-extra-charsets参数指定其它可用的字符集。

下载并解压源码包,打开INSTALL-SOURCE,这里介绍了linux下详细的安装方法,所以大家所要注意的只是下面的configure指令:
对不起!您没有登陆,请先登录论坛.
你可以看到全局的字符集参数全是gbk,gb2312字集应该包含在gbk里,所以不讨论。

进行和平常mysql4.0一样的php操作,你会发现仍然出现中文乱码现象。

这里要说明的是:从mysql 4.1开始,必需在mysql数据库连接后对应用的字符集做出说明,否则非英文字母的文字存取都无法解释变成?号。

解决方法就是要适应新版mysql的要求:

在连接mysql数据库后执行set character set 字符集,该指令在最新版的mysql 5如果默认字集和存储相符可以免设:

set character set gbk;

在php里应该是这么写:mysql_query("set character set gbk");

指令大小写均可

phpwind和discuz是广泛应用的国产php论坛,大量的朋友在应用它,了解了以上步骤,你也可以对论坛源码进行很小的修改,安全地把数据库升级到mysql5:

找到include/db_mysql.php,修改function connect(...){.....}
在选择数据库mysql_select_db($dbname);后面加上一句mysql_query('set character set gbk');存盘。

二. 文件的导入导出:如果存入非gbk字符,这时候你需要先在导入文件的头部加一行: SET NAMES '字符集'; 并注意最后也是;号,别漏了。

文件导入和导出执行

mysql -u用户名 -p密码 数据库名

mysqldump -u用户名 -p密码 数据库名>data.sql

如果用mysqldump导出数据出现了乱码也没有关系,可以运行iconv来转换一下:

iconv -c -f utf8 -t gbk 库文件名>新的gbk的库文件名

综上所述,你要注意:

1。尽量在需要导入的库文件的开头加入set names 'gbk';告诉mysql你要导入的是一个gbk的文件;

2。在mysql上使用 show variables;或show variables like 'character_set_%'; 用来查看当前的字集状态。

3。如果出现乱码也不要怕,其一是你要注意留存原有的备份,其二是用iconv来进行转化。

#PHP连接问题:

由于MySQL 4.1版本开始密码的hash算法改变,所以连接数据库时可能会出现Client does not support authentication protocol问题

此问题在mysql 5中不存在,mysql 5不需要以下的设置。

可以通过一下两种方法解决数据库用户密码不符问题:

其一: mysql> SET PASSWORD FOR 'some_user'@'some_host' = OLD_PASSWORD('newpwd');

其二: mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd') WHERE Host = 'some_host' AND User = 'some_user'

PHP输出的其它乱码问题:

如果将mysql编译为默认编码gbk的话,又会造成非gbk数据直接导入显示为乱码,比如部份utf8存储的字符,如果你大部份数据是utf8字集,当然得把mysql编译为默认编码utf8才合适。

ok 这样导出来的文件,就可以在Mysql4.0.X和Mysql.3.2.X版本中使用了.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
您需要登录后才可以回帖 登录 | 注-册

本版积分规则

小黑屋|手机版|Archiver|数码鹭岛 ( 闽ICP备20006246号 )  

counter

GMT+8, 2025-12-3 14:47 , Processed in 0.073311 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表