EBCDIC 문자표를 표준 출력으로 인쇄하는 방법

EBCDIC 문자표를 표준 출력으로 인쇄하는 방법

따라서 asciiASCII 문자 테이블이 stdout으로 인쇄됩니다. EBCDIC 문자 인코딩을 제외하고 동일한 내용을 인쇄할 수 있는 방법이 있습니까?

답변1

ASCII와 같은 통합된 기본 EBCDIC 테이블은 없습니다.

이것이 당신의 주요 문제일 수 있습니다. ASCII는 실제로 7비트입니다. 8비트를 추가하면 호환되지 않는 지역 테이블의 이상한 세계가 생겼습니다. EBCDIC에는 그러한 안전지대가 없습니다. 그들은 단지 "무작위로" 호환되지 않습니다.

선택 1: https://www.ibm.com/docs/en/epfz/5.3?topic=documents-supported-ebcdic-code-pages

답변2

일부 코드 페이지 cp37는 로 변환될 수 있습니다 ASCII. 다음 스크립트는 코드 포인트 및 해당 유니코드 문자의 테이블을 인쇄합니다.

#!/usr/bin/env perl
use feature qw(unicode_strings);
use utf8;
use open qw(:std :encoding(UTF-8));

use strict;
use warnings;

use charnames qw(:short latin);
use Encode qw(from_to);

sub ebcdic_to_ascii {
    my $ebcdic_ord = shift;
    my $binary     = pack( 'C', $ebcdic_ord );
    from_to( $binary, 'cp37', 'latin1' );
    my $latin_ord = unpack( 'C', $binary );
    return $latin_ord;
}

sub describe_chr {
    my $x = ebcdic_to_ascii(shift);
    my $s = sprintf( "%c", utf8::unicode_to_native($x) );
    return $s =~ /[[:graph:]]/ ? $s : charnames::viacode($x);
}

for ( 0x0 .. 0xFF ) {
    printf "%02X %s\n", $_, describe_chr($_);
}

$ ./ebcdic | column 

관련 정보