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))
都是乱码 展开
好像decode跟encode的用法我用错了?
不知道这样转码 return decode('gb2312',$text); 对不对,
我也试过encode('gb2312',decode('utf8',$text))
都是乱码 展开
展开全部
decode('gb2312',$text); # 进行转码 建议用utf-8
decode('utf-8',$text);
然后就不会乱码了
decode('utf-8',$text);
然后就不会乱码了
追问
谢谢,OK了。想问下,我在linux通过set fileencoding 查到的是utf-8编码,我以为我的脚本就是这个编码。直接输出到excel就成乱码(为何?)。 我认为把$text转为gb2312就可,但实际不行。 另decode('utf-8',$text);不是把utf-8 转为unicode吗,这样到excel却OK,看了很多编码文档,还是不太明白,请指点下 谢谢。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |