设为首页
收藏本站
淘宝精选
开启辅助访问
登录
注册后绑定Q登陆
手机号登录
手机号码,快捷登录
微信登录
QQ登录
快捷导航
发布信息
搜索
搜索
支持我们
使用96IE来支持论坛
首页
任务
勋章
签到
签到等于每天打卡
导读
邀请码
装机必备的软件、去广告版
装机助手
装机网
精品操作系统下载
免费邀请码
记录
Doing
每日签到
本版
帖子
用户
PCOS技术网
»
首页
›
≡技术交流≡
›
电脑技术交流
›
MySQL 数据库乱码问题解决办法
返回列表
发新帖
查看:
555
|
回复:
2
MySQL 数据库乱码问题解决办法
[复制链接]
amwdnuff
amwdnuff
当前离线
积分
10395266
IP卡
狗仔卡
签到天数: 2626 天
连续签到: 5 天
[LV.Master]至尊海神IIIIII
发表于 2009-6-4 10:09
|
广东
|
显示全部楼层
|
阅读模式
MySQL 数据库乱码问题解决办法
如果你遇到乱码问题,可以从下面几个问题逐步检查:
(1)检查你的文件存储编码是否和 meta 声明的一致,假如你的文件是按照 utf-8 编码存储,但是 meta 却声明为 gb2312 ,将导致乱码。
解决办法:将页面存储编码和 meta 声明保持一致。用记事本打开文件,“另存为”,下面有个选项是“编码”,选择和 meta 声明一致的编码方式。(提示:meta 的编码声明要放在 title 标签前面,否则容易导致页面空白。)
(2)检查你的数据库连接有没有设置连接方式(SET NAMES),Mysql4.1 版本以后,如果你没有设置数据库连接方式,那么插入或者查询将出现乱码情况。
解决办法:在你的数据库连接后面(通常是在Mysql_conneCT后面,执行任何查询之前)加上一句 :
Code:
Mysql_query(\"SET NAMES utf8\");
其中 utf8 需要根据你需要设置。
(3)检查你的页面编码、meta 声明、数据库连接方式(SET NAMES)是否一致,如果你的页面和meta设置为gb2312,但是却在程序中设置 SET NAMES utf8,同样会导致乱码。原因是如果页面设置为 gb2312 ,那么表单中的数据也是按照 gb2312 提交,但是程序却要求按照 utf8 去处理,结果自然是乱码。
解决办法:将页面编码、meta 声明、数据库连接方式(SET NAMES)保持一致,当然这里说的一致不是绝对的,如Mysql的 utf8 和页面中的 utf-8 是不一样的,具体要根据你的实际情况设置。
前段时间帮客户将 phpbb 2 迁移到 Discuz! 5,客户要求论坛数据不能有太大损失,本来已经找到了一个转换程序,可以将原有数据迁移到新的数据表中,结果转换后发现页面上全是乱码。仔细研究发现:phpbb安装是按照默认的字符编码 latin1 ,而Discuz! 用的是 gbk ,也就是标题说的“不同字符集数据表转换出现乱码”。
解决方法是转换数据编码方式:
第一步:将数据导出成期望的字符编码:
Code:
Mysqldump -u用户名 -p密码 --default-character-set=原字符集 --set-charset=期望字符集 --skip-opt数据库名 > 导出的文件名.sql
在上文提到的例子中,用下面的命令:
Code:
Mysqldump -uroot -p*** --default-character-set=latin1 --set-charset=gbk --skip-opt phpbb> phpbb_gbk.sql
第二步:建立一个期望字符集的临时数据库:
Code:
CREATE DATABASE `phpbb_gbk` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
注意:这个是上文提到的例子中所用的命令,具体到实际应用时,要根据需要设置。
第三步:将第一步备份的数据导入到这个新创建的临时数据库里面:
Code:
Mysql-u用户名 -p密码 --default-character-set=期望字符集 -f数据库名<第一步备份的文件名.sql
在我的例子中是用下面的命令:
Code:
Mysql-uroot -p*** --default-character-set=gbk -f phpbb_gbk<phpbb_gbk.sql
然后就可以在这两个数据库之间执行转换程序了。
PCOS系统下载站:http://zhuangji.wang
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
抢沙发
千斤顶
显身卡
amwdnuff
amwdnuff
当前离线
积分
10395266
IP卡
狗仔卡
签到天数: 2626 天
连续签到: 5 天
[LV.Master]至尊海神IIIIII
楼主
|
发表于 2009-6-4 10:09
|
广东
|
显示全部楼层
MySQL 数据库乱码问题解决办法
MySQL 数据库乱码问题解决办法
如果你遇到乱码问题,可以从下面几个问题逐步检查:
(1)检查你的文件存储编码是否和 meta 声明的一致,假如你的文件是按照 utf-8 编码存储,但是 meta 却声明为 gb2312 ,将导致乱码。
解决办法:将页面存储编码和 meta 声明保持一致。用记事本打开文件,“另存为”,下面有个选项是“编码”,选择和 meta 声明一致的编码方式。(提示:meta 的编码声明要放在 title 标签前面,否则容易导致页面空白。)
(2)检查你的数据库连接有没有设置连接方式(SET NAMES),Mysql4.1 版本以后,如果你没有设置数据库连接方式,那么插入或者查询将出现乱码情况。
解决办法:在你的数据库连接后面(通常是在Mysql_conneCT后面,执行任何查询之前)加上一句 :
Code:
Mysql_query(\"SET NAMES utf8\");
其中 utf8 需要根据你需要设置。
(3)检查你的页面编码、meta 声明、数据库连接方式(SET NAMES)是否一致,如果你的页面和meta设置为gb2312,但是却在程序中设置 SET NAMES utf8,同样会导致乱码。原因是如果页面设置为 gb2312 ,那么表单中的数据也是按照 gb2312 提交,但是程序却要求按照 utf8 去处理,结果自然是乱码。
解决办法:将页面编码、meta 声明、数据库连接方式(SET NAMES)保持一致,当然这里说的一致不是绝对的,如Mysql的 utf8 和页面中的 utf-8 是不一样的,具体要根据你的实际情况设置。
前段时间帮客户将 phpbb 2 迁移到 Discuz! 5,客户要求论坛数据不能有太大损失,本来已经找到了一个转换程序,可以将原有数据迁移到新的数据表中,结果转换后发现页面上全是乱码。仔细研究发现:phpbb安装是按照默认的字符编码 latin1 ,而Discuz! 用的是 gbk ,也就是标题说的“不同字符集数据表转换出现乱码”。
解决方法是转换数据编码方式:
第一步:将数据导出成期望的字符编码:
Code:
Mysqldump -u用户名 -p密码 --default-character-set=原字符集 --set-charset=期望字符集 --skip-opt数据库名 > 导出的文件名.sql
在上文提到的例子中,用下面的命令:
Code:
Mysqldump -uroot -p*** --default-character-set=latin1 --set-charset=gbk --skip-opt phpbb> phpbb_gbk.sql
第二步:建立一个期望字符集的临时数据库:
Code:
CREATE DATABASE `phpbb_gbk` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
注意:这个是上文提到的例子中所用的命令,具体到实际应用时,要根据需要设置。
第三步:将第一步备份的数据导入到这个新创建的临时数据库里面:
Code:
Mysql-u用户名 -p密码 --default-character-set=期望字符集 -f数据库名<第一步备份的文件名.sql
在我的例子中是用下面的命令:
Code:
Mysql-uroot -p*** --default-character-set=gbk -f phpbb_gbk<phpbb_gbk.sql
然后就可以在这两个数据库之间执行转换程序了。
PCOS系统下载站:http://zhuangji.wang
回复
支持
反对
使用道具
举报
显身卡
amwdnuff
amwdnuff
当前离线
积分
10395266
IP卡
狗仔卡
签到天数: 2626 天
连续签到: 5 天
[LV.Master]至尊海神IIIIII
楼主
|
发表于 2009-6-4 10:09
|
广东
|
显示全部楼层
MySQL 数据库乱码问题解决办法
MySQL 数据库乱码问题解决办法
如果你遇到乱码问题,可以从下面几个问题逐步检查:
(1)检查你的文件存储编码是否和 meta 声明的一致,假如你的文件是按照 utf-8 编码存储,但是 meta 却声明为 gb2312 ,将导致乱码。
解决办法:将页面存储编码和 meta 声明保持一致。用记事本打开文件,“另存为”,下面有个选项是“编码”,选择和 meta 声明一致的编码方式。(提示:meta 的编码声明要放在 title 标签前面,否则容易导致页面空白。)
(2)检查你的数据库连接有没有设置连接方式(SET NAMES),Mysql4.1 版本以后,如果你没有设置数据库连接方式,那么插入或者查询将出现乱码情况。
解决办法:在你的数据库连接后面(通常是在Mysql_conneCT后面,执行任何查询之前)加上一句 :
Code:
Mysql_query(\"SET NAMES utf8\");
其中 utf8 需要根据你需要设置。
(3)检查你的页面编码、meta 声明、数据库连接方式(SET NAMES)是否一致,如果你的页面和meta设置为gb2312,但是却在程序中设置 SET NAMES utf8,同样会导致乱码。原因是如果页面设置为 gb2312 ,那么表单中的数据也是按照 gb2312 提交,但是程序却要求按照 utf8 去处理,结果自然是乱码。
解决办法:将页面编码、meta 声明、数据库连接方式(SET NAMES)保持一致,当然这里说的一致不是绝对的,如Mysql的 utf8 和页面中的 utf-8 是不一样的,具体要根据你的实际情况设置。
前段时间帮客户将 phpbb 2 迁移到 Discuz! 5,客户要求论坛数据不能有太大损失,本来已经找到了一个转换程序,可以将原有数据迁移到新的数据表中,结果转换后发现页面上全是乱码。仔细研究发现:phpbb安装是按照默认的字符编码 latin1 ,而Discuz! 用的是 gbk ,也就是标题说的“不同字符集数据表转换出现乱码”。
解决方法是转换数据编码方式:
第一步:将数据导出成期望的字符编码:
Code:
Mysqldump -u用户名 -p密码 --default-character-set=原字符集 --set-charset=期望字符集 --skip-opt数据库名 > 导出的文件名.sql
在上文提到的例子中,用下面的命令:
Code:
Mysqldump -uroot -p*** --default-character-set=latin1 --set-charset=gbk --skip-opt phpbb> phpbb_gbk.sql
第二步:建立一个期望字符集的临时数据库:
Code:
CREATE DATABASE `phpbb_gbk` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
注意:这个是上文提到的例子中所用的命令,具体到实际应用时,要根据需要设置。
第三步:将第一步备份的数据导入到这个新创建的临时数据库里面:
Code:
Mysql-u用户名 -p密码 --default-character-set=期望字符集 -f数据库名<第一步备份的文件名.sql
在我的例子中是用下面的命令:
Code:
Mysql-uroot -p*** --default-character-set=gbk -f phpbb_gbk<phpbb_gbk.sql
然后就可以在这两个数据库之间执行转换程序了。
PCOS系统下载站:http://zhuangji.wang
回复
支持
反对
使用道具
举报
显身卡
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册后绑定Q登陆
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页