用Perl把UTF-8字符放到Excel中?

我有许多字符是UTF-8,如“é”和“é”的XML文档,我正试图把它们放到Excel中,但有一些编码,我只是没有得到。 我正在使用Win32 :: OLE将数据放入Excel中。

我试过这个:

use Unicode::String qw(utf8 latin1 utf16le); my $u = utf8($content); $output = $u->utf16le; 

但在Excel单元格中唯一显示的是string的第一个字符(正确编码)。 我在这里做错了什么?

您需要使用Win32::OLE->Option调用启用utf8编码。 下面的代码适用于我(东欧字符):

 use utf8; use Win32::OLE qw(CP_UTF8); Win32::OLE->Option(CP => CP_UTF8); # set utf8 encoding my $excel = Win32::OLE->new('Excel.Application') or die $!; $excel->{Visible} = 1; my $wb = $excel->Workbooks->Add; my $sheet = $wb->Sheets(1); $sheet->Range('A1')->{Value} = 'Nějaký český text ďťň'; 

我似乎已经找到了原因。 我只是试着:

 $output = $u->latin1; 

而且完美的工作,所以我认为这是Excel使用的编码。 唯一显示的第一个字符部分可能是因为在utf-16中,每个字符以一个空字符\ 0结束,告诉Excel它是整个字符串。 (这只是一个假设)