perl脚本使用Excel::Writer::XLSX 模块写中文字符到excel中,显示的是乱码,如何解决?来高手指点下

代码如下:#!/usr/bin/perl-wusestrict;useExcel::Writer::XLSX;useEncode;subH{my$text=shift;r... 代码如下:#!/usr/bin/perl -wuse strict;use Excel::Writer::XLSX;use Encode;sub H{ my $text = shift; return decode('gb2312',$text); # 进行转码 }my $workbook=Excel::Writer::XLSX->new("/root/log/测试表.xlsx");my $worksheet=$workbook->add_worksheet(H('自由表'));my $format=$workbook->add_format();$format->set_bold();$format->set_color('red');$format->set_align('center');$worksheet->write("A1",'hi excel',$format);$worksheet->write("A2",H('中文测试'),$format);$workbook->close();运行结果为乱码,网上找了很久,试了很多转码为gb2312都不行。高手指点下
好像decode跟encode的用法我用错了?
不知道这样转码 return decode('gb2312',$text); 对不对,
我也试过encode('gb2312',decode('utf8',$text))
都是乱码
展开
 我来答
pieryon
2016-08-19 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14410 获赞数:166869
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
decode('gb2312',$text); # 进行转码 建议用utf-8
decode('utf-8',$text);
然后就不会乱码了
追问
谢谢,OK了。想问下,我在linux通过set fileencoding 查到的是utf-8编码,我以为我的脚本就是这个编码。直接输出到excel就成乱码(为何?)。 我认为把$text转为gb2312就可,但实际不行。   另decode('utf-8',$text);不是把utf-8 转为unicode吗,这样到excel却OK,看了很多编码文档,还是不太明白,请指点下 谢谢。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式