首页 > 解决方案 > 在linux perl中从任何编码到utf-8的文件编码

问题描述

无论 ip.txt 的编码如何,我都想将文本文件 ip.txt 的编码转换为 US-ASCII。

当我尝试raw:encoding(UTF-16LE)错误以UTF-16LE 出现时:script.perl 第 10 行的部分字符但是当我使用

raw:encoding(US-ASCII)错误就像ascii "\xC0" 在 script.perl 第 10 行没有映射到 Unicode。

use strict;
use warnings;

my $old= '/home/ip.txt';
my $new = '/home/out.txt';
open(my $myold, "<:raw:encoding(UTF-16LE):crlf:utf8", $old) or
die "Could not open file 1 $!";
open(my $mynew, ">>", $new) or
die "Could not open file 2 $!";
while( my $line = <$myold> )
{
    print {$mynew} $line;
}

close($myold);
close($mynew);

请建议如何使用:raw:encoding():lf:utf8?它有什么作用,请解释一下吗?

标签: linuxperlencoding

解决方案


感觉就像您只是在猜测文件的编码。鉴于有 100 个,这不太可能有成效。要消除错误,请提供文件的实际编码。


当我尝试 raw:encoding(UTF-16LE) 错误时UTF-16LE:Partial character at script.perl line 10

该文件未使用 UTF-16le 编码。

当我使用raw:encoding(US-ASCII)错误时ascii "\xC0" does not map to Unicode at script.perl line 10.

该文件未使用 ASCII 编码。(输入文件包含 byte C0,但 ASCII 字符集不包含任何此类字符。)


推荐阅读