解析文本文件时输出奇怪

时间:2014-08-03 06:00:12

标签: perl

我使用以下代码解析文本文件:

  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文本?

1 个答案:

答案 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命令。