免费注册 查看新帖 |

Chinaunix

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

excel编码问题,真是头疼【已解决】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-24 22:14 |只看该作者 |倒序浏览
本帖最后由 slayer_axe 于 2012-05-25 10:07 编辑

readPQCdata是一个excel文件分析函数,通过Spreadsheet::BasicRead处理,分析后的数据返回到@data,放在一个pm文件里面,主程序中parsefile函数调用readPQCdata来进行分析,但是readPQCdata函数在有的主程序中可以正常运行,在有的程序中则不能正确处理编码问题,无法正常运行的主程序是一个较复杂的Tk窗口,通过按钮启动 sub parsefile,应该不会跟Tk有关吧,程序中与编码有关的语句都只有use utf8,
sub parsefile{
        my @data = ();
        my @files = map {$_} sort {$files{$b} <=> $files{$a}} keys %files;
        @data = readPQCdata($choosetype,@files);

}

头疼啊;

论坛徽章:
0
2 [报告]
发表于 2012-05-25 09:33 |只看该作者
多次测试发现文件名的编码会影响到Spreadsheet::BasicRead中读出数据的编码。

在ubuntu中只要use utf8,就不需要进行encode,decode操作,但是在windows中,通过getOpenFile获取的文件名,必须encode 'gb2312',$filename后才能正确打开。
在有问题的脚本中,大致流程是这样的:
$filename = $mw->getOpenFile;
$filename1  = encode 'gb2312',$filename;
$filename2 = decode 'gb2312',$filename1;
$filename3 = encode 'gb2312',$filename2;

最后将$filename3传入Spreadsheet::BasicRead;读出的数据位乱码,encode gb2312后虽然可以正确显示出来,但是匹配不了中文,如果直接将$filename1传入则不存在乱码,中文也能正确匹配。

(之所以会频繁encode,decode是因为encode为gb2312后无法正确在Tk上显示)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP