我有以下代码用于从html文件中提取文本并写入文本文件。在HTML中它包含kannada文本(utf-8)当程序运行时,我得到一个文本文件,我得到文本,但它没有正确的合成。文字是难以理解的格式
enter code here
use utf8;
use HTML::FormatText;
my $string = HTML::FormatText->format_file(
'a.html',
leftmargin => 0, rightmargin => 50
);
open mm,">t1.txt";
print mm "$string";
所以请帮助我。我们在处理时处理文件格式。
答案 0 :(得分:0)
如果我理解正确,您希望输出文件采用UTF-8编码,以便Kannada语言中的字符在输出中正确编码。您的代码可能正在尝试(并且失败)错误地编码到ISO-8859-1中。
如果是这样,那么你可以做的是确保你的文件是用UTF-8编码过滤器打开的。
use HTML::FormatText;
open my $htmlfh, '<:encoding(UTF-8)', 'a.html' or die "cannot open a.html: $!";
my $content = do { local $/; <$htmlfh> }; # read all content from file
close $htmlfh;
my $string = HTML::FormatText->format_string(
$content,
leftmargin => 0, rightmargin => 50
);
open my $mm, '>:encoding(UTF-8)', 't1.txt' or die "cannot open t1.txt: $!";
print $mm $string;
如需进一步阅读,建议您查看以下文档:
其他几点说明:
use utf8
行只会使您的Perl脚本/库可能包含UTF格式。它不会对您如何读取或写入文件进行任何更改。open()
的双参数形式。在某些情况下,它可能允许恶意用户破坏您的系统。 (尽管如此,您在此示例中的用法恰好是安全的。or die
,否则将无声读取或写入文件。 更新3/12:我将其更改为以UTF-8读取文件并将其发送至HTML::FormatText。如果您的a.html
文件在开始时以BOM字符保存,则无论如何它可能已经做了正确的事情,但是这应该使它总是假定传入文件为UTF-8。