1

我正在尝试在 perl 5.8 中生成一个文件,该文件从 xml 文件(具有 utf-8 编码)读取并生成一个 word 文档。当我在命令行运行代码时,它运行良好。

从 CGI::Application 运行相同的代码时,它会忽略 unicode 字符并错过注释。

这是代码:

$template->process("$dir/$input",$vars, \$content )
                                || return "Template Error: " . $template->error();


                    open PBH, ">:encoding(UTF-8)", $doc_file or die $!;
                    print PBH $content;
                    close PBH;

我尝试设置 binmode 但问题似乎出在 CGI::Application 在写入文档文件时忽略了 utf 编码。

当作为 perl 脚本运行时,我有以下代码可以很好地生成具有正确法语口音的 word 文档。

Perl 脚本

#!/usr/local/bin/perl 
use XYZ; 
my $x = new XYZ(); 
$x->gen_pb(); 
1;

模块 XYZ 的代码如下:

    package XYZ; 
   sub gen_pb { 
    $template->process("$dir/$input",$vars, \$content, 
       {binmode => ':encod +ing(utf8)'} ) || return "Template Error: " .    $template->error();      unlink($doc_file) if(-e $doc_file);  
    open(FHPB,">$doc_file"); 
    binmode( FHPB, ":encoding(UTF-8)" ); 
    print FHPB $content; close FHPB; 
}

但是当从 CGI 调用时,相同的模块会生成 word 文档,但没有法语口音。

Perl CGI 程序

#!/usr/local/bin/perl 
use CGI::Application; 
use XYZ; 
.... 
my $x = new XYZ(); 
$x->gen_pb(); 
4

0 回答 0