【发布时间】:2010-06-06 10:30:34
【问题描述】:
我有一个 perl 脚本,可以用俄语将一些信息打印到控制台。脚本将在多个操作系统上执行,因此控制台编码可以是 cp866、koi8-r、utf-8 或其他。是否有一种检测控制台编码的便携方法,以便我可以相应地设置 STDOUT 以便正确打印文本?
【问题讨论】:
我有一个 perl 脚本,可以用俄语将一些信息打印到控制台。脚本将在多个操作系统上执行,因此控制台编码可以是 cp866、koi8-r、utf-8 或其他。是否有一种检测控制台编码的便携方法,以便我可以相应地设置 STDOUT 以便正确打印文本?
【问题讨论】:
如果您使用的是 Windows,则有 Win32::Codepage。
【讨论】:
chcp 程序,我想也有一个编程解决方案。无论如何,强制某些特定的控制台编码不是解决方案。
chcp /? 输出:“显示或设置活动代码页号。”
【讨论】:
【讨论】:
Term::Encoding::get_encoding() 在我的 Windows Server 2012 上使用 cygwin perl 返回 utf-8。 chcp 显示控制台实际上在 cp-437 中,但是 perl 脚本能够很好地打印非拉丁字符。所以我现在很困惑。
chcp 命令和GetConsoleOutputCP API 调用的输出不一致。尝试使用原生 Perl 而不是 Cygwin。