【问题标题】:converting EBCDIC to ASCII in Perl在 Perl 中将 EBCDIC 转换为 ASCII
【发布时间】:2018-03-15 19:48:36
【问题描述】:

如何在 Perl 中将 EBCDIC 转换为 ASCII。我在linux中尝试了dd命令,效果很好。任何人都可以在 Perl 中帮助我吗?

【问题讨论】:

  • 这本质上是一道编程题,最好放在 Stack Overflow 中。

标签: perl


【解决方案1】:

我找到了一个 Perl 模块可以帮助解决这个问题,但是我没有使用它,所以我无法进一步帮助您。通过查看它的文档,它看起来很简单。

Convert::EBCDIC

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

【讨论】:

    【解决方案2】:

    从 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
    

    【讨论】:

      【解决方案3】:

      使用 Encode 模块(自 2002 年 Perl5.8.0 以来,它一直是 Perl 发行版的标准部分)。

      使用decode() 将您的EBCDIC 转换为Perl 字符,使用encode() 将您的字符转换为ASCII,或者使用from_to() 一步完成转换。

      【讨论】:

        猜你喜欢
        • 2022-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多