免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5510 | 回复: 6
打印 上一主题 下一主题

perl查询mysql乱码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-28 15:13 |只看该作者 |倒序浏览
本帖最后由 abcfy2 于 2013-08-28 15:17 编辑

我不懂perl,生产环境需要一个迁移过程是perl脚本。
来自于这里:http://foaa.de/old-blog/2010/04/ ... -mantis-to-redmine/

主要问题出自这段代码
  1. # open dbi
  2. my $dbix_mantis = DBIx::Simple->connect(
  3.     'DBI:mysql:database='. $opt{ mantis_db_name }. ';host='. $opt{ mantis_db_host },
  4.     $opt{ mantis_db_login }, $opt{ mantis_db_pass },
  5.     { RaiseError => 1 }
  6. );
  7. my $dbix_redmine = DBIx::Simple->connect(
  8.     'DBI:mysql:database='. $opt{ redmine_db_name }. ';host='. $opt{ redmine_db_host },
  9.     $opt{ redmine_db_login }, $opt{ redmine_db_pass },
  10.     { RaiseError => 1 }
  11. );
复制代码
老外写的东西从来不考虑编码问题,到我这边迁移mantis到redmine的时候,出现了查库的乱码:
  1. *** Stati ***

  2. Mantis: Status
  3.   new                  :  10
  4.   feedback             :  20
  5.   acknowledged         :  30
  6.   confirmed            :  40
  7.   assigned             :  50
  8.   resolved             :  80
  9.   closed               :  90

  10. Redmine: Status
  11.   ??                   :   1
  12.   ???                  :   2
  13.   ???                  :   3
  14.   ??                   :   4
  15.   ???                  :   5
  16.   ???                  :   6

  17. Status translation
  18.     Mantis               ->     Redmine            
  19. 10:new                  ->   1:??                  
  20. 20:feedback             ->   4:??                  
  21. 30:acknowledged         ->   1:??                  
  22. 40:confirmed            ->   1:??                  
  23. 50:assigned             ->   2:???                 
  24. 80:resolved             ->   3:???                 
  25. 90:closed               ->   3:???            
复制代码
中文这里都乱码了,翻了下老外给出的perl脚本,搜索到这段代码,猜测是没有加入UTF8编码导致,应该如何修改这段代码呢?
mysql的编码是UTF8的

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
2 [报告]
发表于 2013-08-28 15:25 |只看该作者
你是在win还是linux下
在win下用cmd 显示的话 就encode gbk吧

论坛徽章:
0
3 [报告]
发表于 2013-08-28 15:27 |只看该作者
回复 2# grshrd49


    linux下,代码如何改呢?我没学过perl,临时迁移才用到这个脚本的,能否告知具体如何修改呢?
mysql的四个编码都是UTF-8的

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
4 [报告]
发表于 2013-08-28 15:50 |只看该作者
$dbh->exec("SET NAMES 'UTF8'")  ?

论坛徽章:
0
5 [报告]
发表于 2013-08-28 16:00 |只看该作者
回复 4# laputa73


    Can't locate object method "exec" via package "DBIx::Simple" at ./mantis2redmine.pl line 204.

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
6 [报告]
发表于 2013-08-28 16:52 |只看该作者
execute
我从php代码里面贴过来的,稍微做一下对应啦

我们以前的perl代码里面似乎也没有特别设置.
很久不用了.

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
7 [报告]
发表于 2013-08-29 09:13 |只看该作者
client和server和数据库编码一致即可
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP