您的位置:BugFree > 论坛 > 技术支持 > BugFree Discussion[BugFree讨论] > 乱码的最终完美解决方案
2006-03-31 12:49:37 乱码的最终完美解决方案
#1
zhenxin0603
访问次数 : 3
注册日期 : 06-03-03 13:16
上次访问 : 09-10-29 21:05
安装MySql时选择的默认字符集为UTF8
1.先用下列语句导出数据
mysqldump -uroot -p --default-character-set=latin1 --skip-opt bugfree > test.sql
[color=#FF0000]注意:如果加上--skip-opt 参数时 生成的SQL语句中表的主键会改为非自增长的,请参考BugFree中Document目录下的BugFree.sql[/color]
[color=#ff0000]或者不加--skip-opt 参数,则需要将生成的SQL语句中建每个表的语句最后的DEFAULT CHARSET=lation1;改为DEFAULT CHARSET=utf8;[/color]
此时在Test.sql语句中即可以看到中文的数据库内容,请注意此SQL语句与BugFree中的语句看有何不同之处先其修正
2.在数据库中将BugFree删除,并重新用以下语句重建一个新库
mysql> CREATE DATABASE `Bugfree` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
3.然后用下列语句将前边导出的数据导入到新建的库中
C:MySQL5bin>mysql -uroot -p BugFreeQuery("Set Names 'utf8'");
即将
$MyDB->Connect($BugConfig["BugDB"]["Host"],$BugConfig["BugDB"]["User"],$BugConfig["BugDB"]["Password"],$BugConfig["BugDB"]["Database"]);
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
改为
$MyDB->Connect($BugConfig["BugDB"]["Host"],$BugConfig["BugDB"]["User"],$BugConfig["BugDB"]["Password"],$BugConfig["BugDB"]["Database"]);
$MyDB->Query("Set Names 'utf8'");
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

我的运行环境:Win2003 Standand Sp1,Apache 2.0.55,Php 5.1.2 ,Mysql 5.0.18,BugFree 1.0,phpMyAdmin 2.7.0-pl2
最后编辑, 06-03-31 14:48
回帖
2006-03-31 13:34:31
#2
Mr.Lee
访问次数 : 241
注册日期 : 05-10-06 10:46
上次访问 : 09-10-29 21:05
哪位有条件的话,验证一下是否通用。通用的话我把这个主题置顶。先谢谢zhenxin0603
回帖
2006-03-31 14:35:41
#3
zhenxin0603
访问次数 : 3
注册日期 : 06-03-03 13:16
上次访问 : 09-10-29 21:05
有点小问题,文章内容已经修改,注意看红色部分
回帖
2006-03-31 16:24:41
#4
wwccss
访问次数 : 593
注册日期 : 05-05-01 10:08
上次访问 : 10-07-19 11:44
呵呵,多谢!
回帖
2006-04-05 09:07:20
#5
sflash2000
访问次数 : 1
注册日期 : 06-03-20 14:53
上次访问 : 09-10-29 21:05
楼主的方法应该是正确的,出现问题的原因GreenAMP的默认字符集是latin1,而不是utf8。建议wwccss大侠在安装文档中说明这一点,修改方法其实很简单,简述如下:
1. 安装GreenAMP后,修改C:\Windows目录中my.ini文件,将其中的default-character-set=latin1改为default-character-set=utf8。
2. 然后用http://localhost/install.php进行安装
3. 最后按照楼主的方法,"在SetupBug.inc.php文件的第60行插入$MyDB->Query("Set Names 'utf8'");"

以后在phpMyAdmin和BugFree内都不会出现乱码了。
回帖
2006-04-07 13:04:01
#6
zhenxin0603
访问次数 : 3
注册日期 : 06-03-03 13:16
上次访问 : 09-10-29 21:05
5楼说的不错,只是在新安装的时候,对用以前的老数据想转过来就不太容易了
回帖
2006-05-14 19:38:51
#7
suandier
访问次数 : 2
注册日期 : 06-05-06 23:15
上次访问 : 09-10-29 21:05
我的安装环境是xp+iis5+php5+mysql5,安装配置好后,在bugfree里显示的中文全是乱码,并且在bugfree里添加记录中有任何一个字段值是中文的时候,系统就报错,记录无法添加到数据库中;后来在SetupBug.inc.php文件第60行前插入$MyDB->Query("Set Names 'utf8'");后,中文显示全部正常,并且数据保存一切都正常,谢谢zhenxin0603!
回帖
2006-05-19 13:29:07
#8
limiao
访问次数 : 12
注册日期 : 06-04-29 16:09
上次访问 : 10-02-09 08:31
这个问题曾让我好困惑,我的安装环境是win2003+iis6+php5+mysql5,安装配置好后,在bugfree里显示的中文,在phpmyadmin显示乱码,所有安装我都使用的UTF8, 现在只需要SetupBug.inc.php文件第60行前插入$MyDB->Query("Set Names 'utf8'");后,新加的中文显示全部正常,老数据变乱码了,反正不多就Empty了,谢谢zhenxin0603!:)
回帖
2006-06-26 10:46:41
#9
dimply2001
访问次数 : 1
注册日期 : 06-06-16 09:05
上次访问 : 09-10-29 21:05
按照楼主介绍的方法,解决了乱码的问题,还好我是第一次安装,没有导入导出就更简单了,只用加一条语句就搞定。谢谢了。
回帖
2006-06-30 13:23:11
#10
death0320
访问次数 : 21
注册日期 : 06-06-30 00:51
上次访问 : 09-10-29 21:05
请问apache中的AddDefaultCharset GB2312也要改吗?
还有就是我安装的时候是自己改的ConfigBug.inc.php文件,连接数据库就在这里面改的。SetupBug.inc.php是不是一定要执行install.php才有用?

数据库我用的是utf8,我的apache中的httpd.conf设的AddDefaultCharset GB2312,没有执行过install.php。我直接改的ConfigBug.inc.php
$BugConfig["LangList"]["English"] = "English";
$BugConfig["LangList"]["ChineseGB2312"] = "Chinese";
//$BugConfig["LangList"]["ChineseUTF8"] = "ChineseUTF8";
//$BugConfig["DefaultLang"] = "ChineseUTF8";
$BugConfig["DefaultLang"] = "Chinese";

我现在的情况是这样的,从数据库中取出来的中文字是问号,还有就是点击[后台管理]后显示的页面,整个页面都是乱码,请高手帮我看看要怎么解决,先谢谢了。
回帖
2006-07-04 19:01:12
#11
sune
访问次数 : 2
注册日期 : 05-06-22 13:29
上次访问 : 09-10-29 21:05
我是用Dumping出來的test.sql,把所有資料drop後,再insert進去即可。
回帖
2006-07-05 11:17:57
#12
unimap_lily
访问次数 : 91
注册日期 : 05-08-05 11:08
上次访问 : 09-10-29 21:05
我使用他的最后一步后,从0.4下导过来的记录不乱码了!
4.在SetupBug.inc.php文件的第60行插入$MyDB->Query("Set Names 'utf8'");
即将
$MyDB->Connect($BugConfig["BugDB"]["Host"],$BugConfig["BugDB"]["User"],$BugConfig["BugDB"]["Password"],$BugConfig["BugDB"]["Database"]);
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
改为
$MyDB->Connect($BugConfig["BugDB"]["Host"],$BugConfig["BugDB"]["User"],$BugConfig["BugDB"]["Password"],$BugConfig["BugDB"]["Database"]);
$MyDB->Query("Set Names 'utf8'");
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
谢谢
数据库的乱码按1.0升级时的方法做的,乱码解决!
我的系统是winXP+GreenAMP
回帖
2006-08-05 17:17:52
#13
ATang
访问次数 : 71
注册日期 : 05-07-21 12:58
上次访问 : 10-03-02 17:03
从旧数据库中导出不乱码的数据的正确方法:
安装 phpMyBackupPro,用默认的 latin1 编码来读出、保存数据,数据就正确的,没有乱码了。
回帖
2006-08-08 11:20:06
#14
darkblue
访问次数 : 1
注册日期 : 06-08-08 11:01
上次访问 : 09-10-29 21:05
俺的还是乱码,并且项目也添加不了.谁能帮帮俺?
回帖
2006-08-08 12:36:01
#15
darkblue
访问次数 : 1
注册日期 : 06-08-08 11:01
上次访问 : 09-10-29 21:05
我按照本帖各位的描述都做了,现在在phpMyAdmin里看BugFree添加的是乱码,在BugFree里看phpMyAdmin里正常的是乱码.
MySql的my.ini文件的default-character-set=latin1也改为了default-character-set=utf8。
也插入了这行$MyDB->Query("Set Names 'utf8'");不过我那里不是在第60行.
郁闷啊.
回帖
2006-08-09 17:33:26
#16
darkblue
访问次数 : 1
注册日期 : 06-08-08 11:01
上次访问 : 09-10-29 21:05
哪位兄台指教一下撒.
回帖
2006-09-07 09:01:35
#17
usebugfree
访问次数 : 1
注册日期 : 06-09-07 08:58
上次访问 : 09-10-29 21:05
导入数据库的时候选为LATIN1的编码方式就可以了吧.
回帖
2008-11-22 13:47:54
#18
soyota
访问次数 : 2
注册日期 : 08-11-22 11:53
上次访问 : 09-10-29 21:05
可以使用navicat8 for mysql执行批次任务文件导入.sql
回帖