perl np ++搞乱了字符

时间:2014-07-19 06:45:11

标签: perl encoding

原始文件中的字符表示如何:

" – "

在np ++的输出控制台中使用perl脚本显示为这个?

" ÔÇô "

原始编码是UTF-8(根据np ++)并打开并读取我使用此行的文件:

open(DATA, '<:encoding(utf-8)', "C:\\test.csv") or die "Can't open data";
@lines = <DATA>;

如果我用以下内容迭代:

foreach (@lines){
  print $_;
}

如上所述,角色代表。我在notepad ++控制台中显示输出而不是新文件。

1 个答案:

答案 0 :(得分:1)

print声明之前,请尝试添加此内容:

binmode(STDOUT, ":utf8");
foreach (@lines){
  print $_;
}

在Windows系统上,

use Encode; 
binmode(STDOUT, 'encoding(cp850)'); 

系统中的代码页(850)编号可能不同,请在DOS控制台中编写此订单以获取您的编号:

C:\>chcp

也就是说,即使你做的一切都可以正常工作,因为有问题的人物U + 2013不是两种最常见的控制台编码cp850cp437的一部分。它无法使用这些编码显示在控制台中。

如果是这种情况,最好的办法是在提示符处输入chcp 65001,将控制台的编码切换为UTF-8。您需要编辑控制台的属性以将字体切换为适当的字体(例如Lucidia控制台)。完成后,您可以使用:encoding(UTF-8)