【问题标题】:Perl on Windows: Problems with EncodingWindows 上的 Perl:编码问题
【发布时间】:2013-02-19 21:20:48
【问题描述】:

我的 Perl 脚本有问题。在类 UNIX 系统中,它将所有 Unicode 字符(如 ä)正确打印到控制台。在 Windows 命令行中,字符被分解为无意义的字形。有没有一种简单的方法可以避免这种情况?我正在使用use utf8;

提前致谢。

【问题讨论】:

标签: windows perl encoding activeperl


【解决方案1】:

use utf8; 只是告诉 Perl 你的源代码是使用 UTF-8 编码的。

它也不适用于 unix。有一些字符串无法正确打印 (print chr(0xE9);),大多数会打印“宽字符”警告 (print chr(0x2660);)。您需要解码输入并编码输出。

在 unix 系统中,这通常是

use open ':std', ':encoding(UTF-8)';

在 Windows 系统中,您需要使用chcp 来查找控制台的字符页面。 (我是 437。)

use open ':std', ':encoding(cp437)';  # Encoding used by console
use open IO => ':encoding(cp1252)';   # Encoding used by files

【讨论】:

  • 在 Windows 7 cmd.exe 中尝试这个,它只会产生错误。 Odd number of elements in hash assignment at C:/strawberry/perl/lib/encoding.pm line 120. encoding: Unknown encoding ':std' at C:\Users\Peter\perl\foo.pl line 9.:encoding...IO => .. 相同)。我终于开始工作是将 cmd.exe 字体更改为 Lucida 控制台,chcp 1252,然后在脚本中使用use encoding 'cp1252';
  • @TLP,已修复。应该是open,而不是encoding。永远不要使用encoding
  • +1 这行得通。哇,打印字符太麻烦了。
猜你喜欢
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-15
  • 2011-04-30
  • 1970-01-01
相关资源
最近更新 更多