从根本解决 MySQL 3 数据库升级到 MySQL 4.1 乱码问题
这两天,研究了一下mysql升级的乱码问题,终于解决了困扰我很久的问题,这里记录一下,以前相关的文章也已经更新了
以后就可以访问的更换服务器了
先来看问题描述:
开始的服务器版本: Linux + Apache2.0 + php4.4.0 + mysql3.2.3 无乱码 (SQL导出文件起始地)
开始的本地测试版本: XP + IIS5.1 + php4.4.0 + mysql3.2.3 无乱码
更新的服务器版本: Linux + Apache2.0 + php4.4.0 + mysql4.1 无乱码 (空间提供商上传)
更新的本地测试版本: XP + IIS5.1 + php4.4.0 + mysql4.1 无乱码(不知道为什么,但是后来又乱码了)
最新的本地测试版本: XP + Apache2.0 + php4.4.0 + mysql4.1 乱码….崩溃..3天..未解决..
问题解决:
首先将 sql 文件从服务器上下载下来,或者从什么地方得到这个 sql 执行文件
1. 使用 UltraEdit 打开这个文件,观看文件是否是utf-8格式,下面的状态栏有提示,如果不是文件另存为UTF-8(无BOM)格式,观看文件的中文字符,是否显示正常,显示正常OK,继续
说明: 记着是 UltraEdit ,因为这个软件支持UTF-8编码文件(其他的也可以),windows自带的记事本可能出现匪夷所思的事情,无(BOM)格式也很重要,PHP不支持BOM头… 如果这里无法显示正常的话,不可能往下进行了…我试过,所以说多用不同形式导出几次,使得原始数据正常
2. 如果sql文件出现,新建表指令,注意中间的
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=101 ;
修改为: ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=101 ;
说明: 本操作就是告诉mysql表使用什么字符集
3. 新建数据库,使用 utf8_general_ci
4. 使用 phpMyAdmin 导入该文件到 mysql4, 导入的文件编码选择 UTF-8
说明: 如果导入错误,看看是否出现语法错误,修改,继续导入
5. 使用 phpMyAdmin 浏览相关记录,观看中文记录是否显示正常,正常继续
6. 浏览你的php程序,观看,读取数据库内容,仍然乱码,在打开数据库 @mysql_connect( $host, $user, $pass ) 类似语句之后添加 @mysql_query("SET NAMES ‘utf8’");
7. 刷新网页,OK,成功
说明:
- 中间任何的过程出现错误,将导致转换失败
- 这里还有一个问题,就是现在所有的数据,前台数据,数据库数据,和传输过程的数据都用utf-8格式,所以相关的数据量必然会增大,如果网页特别巨大,而且考虑到页面加载问题,可能会出现一点问题
恩,相关的知识就不在这里细说了,我已经写在了这个博客中的"网站开发"类别中,想了解的,可以去看看
个人感觉…很复杂… mysql,phpmyadmin,php,mysql 各个方面都会导致乱码问题….
不过今天解决了,高兴的,嘿嘿
本博客和joomla站点就是使用这种方法实现转换的
—————————-
在记录一下自己以前的思路,虽然有很多错误的,但值得思考
查得的解决途径: (对我这个问题,均未奏效) (05年5月18日删除)
1. php配置文件php.ini问题:
类似语句: default_charset = "iso-8859-1" 或 default_charset = "UTF-8"
解决方法: 注释掉
2. Apache配置文件httpd.conf问题:
类似语句: AddDefaultCharset off 或者 AddDefaultCharset UTF-8
解决办法: 添加或者修改,不提倡用第二个
3. Mysql问题 传输过程乱码,显示乱码和结果集乱码…
类似语句: SET NAMES ‘utf8’;
相当于: SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
解决办法: 每次SQL语句之前执行
4. phpmyadmin导入问题
与数据库的连接校对,字符集,和导入时选择的文件字符集都有关系
5. phpmyadmin提示的两个错误
1. 没有发现 PHP 的扩展设置mbstring, 而当前系统好像在使用宽字符集。没有 mbstring 扩展的 phpMyAdmin 不能正确识别字符串,可能产生不可意料的结果.
2. Your PHP MySQL library version 3.23.49 differs from your MySQL server version 4.1.22. This may cause unpredictable behavior. (网上查这个好像没问题)
6. XP问题: XP的文件,也就是PHP文件本身的问题….越来越离谱好像…
Trackback from your site.