我使用以下代码解析文本文件:
open(INFO, "file.txt") or die("Could not create file.");
foreach my $line (<INFO>)
{
print $line;
}
close(INFO);
这就是文本文件的样子:
aaaaaa bbbb
以下是打印到控制台的方式:
a a a a a a b b b b
我猜这是某种编码或类似的东西。 有谁知道这是什么样的编码以及如何将其转换为常规的ascii文本?
答案 0 :(得分:0)
正如其他人在评论中所说,该文件可能已编码,您的文本编辑器正在隐藏它。在十六进制编辑器中打开它是确定文件包含内容的最佳方法。
如果您有编码文件,则需要使用encoding:
打开该文件open(INFO, "<:encoding(UTF-16)", "file.txt") or die("Could not create file.");
因为我猜您的文件是UTF-16编码的。如果您(使用十六进制编辑器)了解您的文件有其他编码,请切换名称。
现在,在打印方面,只要它真的只包含ascii,就没有什么特别需要做的了。如果没有,你需要告诉perl你要将unicode转储到stdout:
binmode STDOUT, ":encode(utf8)";
我建议阅读一般的编码,Encode模块,open和binmode命令。