windows - Sætter UTF-8 tegn i Excel med Perl?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har XML-dokumenter, der har mange tegn, der er UTF-8 som 'É' og 'é', og jeg forsøger at sætte disse i Excel, men der er noget med kodningen, som jeg bare ikke får. Jeg bruger Win32 :: OLE til at sætte dataene i Excel.


Jeg har prøvet dette:


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


men det eneste der vises i Excel-cellerne er strengens første tegn (korrekt kodet). Hvad laver jeg galt her?

Bedste reference


Du skal aktivere utf8-kodning ved hjælp af Win32::OLE->Option opkald. Koden nedenfor virker for mig (for øst-europa tegn):


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 ďťň';

Andre referencer 1


Jeg synes at have fundet ud af hvorfor. Jeg prøvede simpelthen:


$output = $u->latin1;


og det fungerede perfekt, så jeg formoder, at det er hvad kodning Excel bruger. Den eneste, der viser førstegangs tegn, var sandsynligvis fordi i fig. 16, hver karakter afsluttes med en null char \ 0, der fortæller Excel, at det er hele strengen. (Det er bare en antagelse)