Perl:根据环境选择编码

时间:2014-11-19 17:33:16

标签: perl internationalization

我正在尝试根据环境中设置的语言辨别要使用的正确perl编码。当语言是UTF-8语言时,这很有效,但是一个用户试图在AIX上将它们的LANG设置为“Ja_JP”。

$ LANG=Ja_JP perl -MI18N::Langinfo=langinfo,CODESET -E 'say langinfo(CODESET)'
IBM-943

不幸的是,我不知道如何将其转换为binmode可以接受的内容。

1 个答案:

答案 0 :(得分:1)

根据Shift JIS上的维基百科页面,

  

IBM CCSID 943具有与Code Page 932相同的扩展名。

所以你可以使用:encoding(cp932)


要使:encoding(IBM-943)正常工作,您需要在Encode :: Alias中创建一个别名。

您可以提交功能请求以添加此别名,或者您可以在脚本中自行定义:

use Encode::Alias qw( define_alias );
define_alias( qr/^ibm-943$/i => '"cp932"' );

如果您要跟随define_alias BEGIN { },则需要use open ':std', ':locale'; 调用该地点

{{1}}