正在浏览:
1 名游客
mysql 從 latin1 轉 utf-8 的經驗 |
||||
---|---|---|---|---|
中级会员
注册日期:
2007/12/18 23:58 所属群组:
注册会员 等级: 6; EXP: 5
HP: 0 / 126 MP: 17 / 422 |
【以下案例只适用於全 utf-8 环境。若不同环境,必须作些修改。】
许多人可能会有这样的经验:明明全部系统都以 UTF-8 设置,但是用 phpMyAdmin 去看数据库时,发现中文字仍然是乱码。 若有发生这种情况,是因为虽然 mysql 本身及网页都是 utf-8, 但是 xoops 却用 latin1 将数据传给 mysql,因此最后是 utf-8 数据被以 latin1 的格式储存进数据库。其实在 xoops 来看没有任何问题,只是用 phpMyAdmin 看时,就都是乱码,较不好管理。 以下是环境: mysql: 5.1.22 mysql 文字编码: utf-8 unicode mysql 连线校对: utf-8_unicode_ci 所有数据库都以 utf-8 建立。 phpMyAdmin: 2.11.3 (Language 选 「中文 - Chinese Traditional」) xoops 2.0.17.1 对於这种状况,解决的几个面向: 1. mysql 设定: /etc/my.cnf (或 Windows 下的 my.ini) 要有以下设定: [client] default-character-set=utf8 [mysqld] default-character-set=utf8 init_connect='SET NAMES utf8' 2. 在 xoops 端,先前已有各位前辈在本论坛告知大家要在 xoops/class/database/mysqldatabase.php 加入以下这行: @mysql_query("SET NAMES 'utf8'", $this->conn); (加此行在 $result = mysql_query($sql, $this->conn); 之前) 就可以强制用 utf8 传输。 3. mySQL 数据库: 可是若有旧的 database 怎麽办? 照上面的方法改了之後,迈入 xoops 後以前所有的中文字都变乱码了,新输入或重新输入的中文字才会变正常显示。 没关系,照以下的步骤,就能将以前的数据库转码了: 先采以下方法将数据库 dump 出: mysqldump --all-databases --default-character-set=latin1 -u root -p > dump.sql 修改 dump.sql 文件首页的: /*!40101 SET NAMES latin1 */; 成为 /*!40101 SET NAMES utf8 */; 然后再将数据库 import 回即可: mysql -u root -p < dump.sql 重新打开 xoops 看,中文一切 OK。进入 phpMyAdmin 看,也都没有乱码了。 Have a nice day!
2007/12/21 19:43
|
|||
|
回复: mysql 從 latin1 轉 utf-8 的經驗 |
||||
---|---|---|---|---|
资深会员
注册日期:
2006/8/22 16:04 所属群组:
注册会员 等级: 12; EXP: 5
HP: 0 / 276 MP: 56 / 1994 |
好帖,收藏了。
2007/12/21 21:02
|
|||
|
回复: mysql 從 latin1 轉 utf-8 的經驗 |
||||
---|---|---|---|---|
网站管理员
注册日期:
2005/10/29 13:32 来自 北京
所属群组:
网站管理员 注册会员 ComSupp 推广组 等级: 38; EXP: 42
HP: 374 / 935 MP: 737 / 8974 |
关于第3点,转换旧的MySQL数据库乱码,真是太棒了!这个问题曾经困扰了我一段时间。
XOOPS2.0.16及其之前的gb2312版本由于没有处理好编码转换,安装后就存在这个问题:前台没有任何问题,但phpmyadmin中查看却是乱码。虽然不影响使用,但心里总是不大舒服。 现在有了转换方法,就能很容易地把旧数据库转换为完美状态。
2007/12/22 16:15
|
|||
|
回复: mysql 從 latin1 轉 utf-8 的經驗 |
||||
---|---|---|---|---|
资深会员
注册日期:
2006/1/10 1:51 所属群组:
注册会员 等级: 12; EXP: 50
HP: 0 / 287 MP: 60 / 2591 |
我的xoops安装的是gb2312版 ,但数据库却设成了utf-8,
sql 头文件显示为:/*!40101 SET NAMES utf8 */; 当然在数据库后台也是乱码了。 如果我想把我的xoops转为utf-8的,用domecc的方法似乎还不行。 不知怎么办。 谢谢
1/20 7:11
|
|||
|
回复: mysql 從 latin1 轉 utf-8 的經驗 |
||||
---|---|---|---|---|
Support Team
注册日期:
2006/11/30 20:48 来自 beijing
所属群组:
网站管理员 注册会员 Dev+Hack 资料整理组 等级: 21; EXP: 34
HP: 101 / 508 MP: 179 / 3263 |
用新版的phpmyadmin,在导入的时候可以选择导入数据库的编码,机器导出时候数据库的版本
还是推荐mysql5
1/21 1:33
|
|||
_________________
哦的小站,发点牢骚。http://ez.xoops.cn欢迎大家踩踩。 |
||||
|
您不可查看帖子。
您不可发帖。
您不可回复。
您不可编辑自己的帖子。
您不可删除自己的帖子。
您不可发起投票调查。
您不可在投票调查中投票。
您不可上传附件。
您不可不经审核直接发帖。
您不可使用主题类别。
您不可以使用HTML语法。
您不可以使用签名档。