开发者社区> 问答> 正文

Linux perl中从任何编码到utf-8的文件编码

我想将文本文件ip.txt的编码转换为US-ASCII,而不管ip.txt的编码是什么。

当我尝试raw:encoding(UTF-16LE)错误时,在script.perl第10行中出现UTF-16LE:Partial字符,但是当我使用时

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?它有什么用,请解释一下?

展开
收起
祖安文状元 2020-01-06 15:56:02 754 0
1 条回答
写回答
取消 提交回答
  • 感觉就像您只是在猜测文件的编码。看到有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字符集不包含任何此类字符。

    2020-01-06 15:56:11
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载