用户名 密码 记住我 还未注册?

文章管理 - mysql 從 latin1 轉 utf-8 的經驗

文章管理 :: Xoops综合 :: Xoops 环境和安装

mysql 從 latin1 轉 utf-8 的經驗


http://xoops.org.cn/modules/newbb/viewtopic.php?topic_id=14658&forum=1
【以下案例只适用於全 utf-8 环境。若不同环境,必须作些修改。】
许多人可能会有这样的经验:明明全部系统都以 UTF-8 设置,但是用 phpMyAdmin 去看数据库时,发现中文字仍然是乱码。

作者DavidChiou

【以下案例只适用於全 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!


来源:http://xoops.org.cn/modules/newbb/vie ... opic_id=14658&forum=1

<< 我的xoops搬家总结(附数据库备份小脚本) 使用WAMP5搭建Apache+MySQL+PHP环境 >>
跟踪网址
  • 文章地址: http://xoops.org.cn/modules/article/view.article.php/c8/40
  • 跟踪地址: http://xoops.org.cn/modules/article/trackback.php/40
API: 工具箱 短消息 Email PDF 书签 打印 | RSS | RDF | ATOM
Copyright© cfc4n & XOOPS CHINA
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。
发表者 树状展开
msryat
发表日期: 11月05日 23:21  更新: 11月05日 23:21
中级会员
注册日期: 11月05日
来自: ali
发表总数: 63
 评论: mysql 從 latin1 轉 utf-8 的經驗