【发布时间】:2018-03-15 19:48:36
【问题描述】:
如何在 Perl 中将 EBCDIC 转换为 ASCII。我在linux中尝试了dd命令,效果很好。任何人都可以在 Perl 中帮助我吗?
【问题讨论】:
-
这本质上是一道编程题,最好放在 Stack Overflow 中。
标签: perl
如何在 Perl 中将 EBCDIC 转换为 ASCII。我在linux中尝试了dd命令,效果很好。任何人都可以在 Perl 中帮助我吗?
【问题讨论】:
标签: perl
我找到了一个 Perl 模块可以帮助解决这个问题,但是我没有使用它,所以我无法进一步帮助您。通过查看它的文档,它看起来很简单。
Convert::EBCDIC, ascii2ebcdic, ebcdic2ascii - 字符串的 Perl 模块 EBCDIC与ASCII之间的转换
模块描述中的示例用法:
use Convert::EBCDIC;
$ascii_string = ebcdic2ascii($ebcdic_string);
$ebcdic_string = ascci2ebcdic($ascii_string);
$translator = new Convert::EBCDIC;
$translator = new Convert::EBCDIC($table);
$ascii_string = $translator->toascii($ebcdic_string);
$ebcdic_string = $translator->toebcdic($ascii_string);
$Convert::EBCDIC::ccsid819
【讨论】:
从 5.8 开始的 perl 具有使用 Encode 的内置 EBCDIC 处理。有关详细信息和示例,请参见手册页 perlebcdic。有几种 EBCDIC 变体。 dd conv=ascii 和相反的 dd conv=ebcdic 似乎使用代码页 cp1047,所以以下应该可以工作:
echo 'abcdefghijklmnopqrstuvwxyz[]<>()01234567689' |
dd conv=ebcdic |
perl -e '
use Encode "from_to";
$a = <>;
from_to($a,"cp1047","latin1");
print $a."\n";
' - |
cat -vet
【讨论】:
使用 Encode 模块(自 2002 年 Perl5.8.0 以来,它一直是 Perl 发行版的标准部分)。
使用decode() 将您的EBCDIC 转换为Perl 字符,使用encode() 将您的字符转换为ASCII,或者使用from_to() 一步完成转换。
【讨论】: