--- SADAHIRO Tomoyuki <[EMAIL PROTECTED]> wrote:
> > On Wed, 14 Dec 2005 05:19:00 -0800 (PST), rajarshi > das <[EMAIL PROTECTED]> wrote > > > Hi, > > > > The following two line script gives an error on > z/OS : "Unknown encoding 'iso-2022-jp' at line ..". > > ----------------- > > use Encode; > > use encoding 'iso-2022-jp'; > > ------------ > > > > How do we confirm if iso-2022-jp is supported on > z/OS or not ? > > Or if it is supported and not working as expected > for some reason ? > > I found Encode/Config.pm such a chunk. > > unless (ord("A") == 193){ > %ExtModule = > ( > (snip) > '7bit-jis' => 'Encode::JP', > 'euc-jp' => 'Encode::JP', > 'iso-2022-jp' => 'Encode::JP', > 'iso-2022-jp-1' => 'Encode::JP', > 'jis0201-raw' => 'Encode::JP', > 'jis0208-raw' => 'Encode::JP', > 'jis0212-raw' => 'Encode::JP', > 'cp932' => 'Encode::JP', > 'MacJapanese' => 'Encode::JP', > 'shiftjis' => 'Encode::JP', > I placed the lines 'iso-2022-jp' .... 'iso-2022-jp-1' .... ... .... 'shiftjis' .... outside the unless block. Then, it started recognising the iso-2022-jp encoding. > And I found this in Encode/JP.pm (similarly in CN, > KR, TW) > > BEGIN { > if (ord("A") == 193) { > die "Encode::JP not supported on EBCDIC\n"; > } > } I commented the above lines in the BEGIN block. > > > Any pointers to the source where this encoding is > defined ? > > The pointers might help understand why it is not > defined > > on an EBCDIC platform. > > > > I printed Encode->encodings() on linux as well as > z/OS > > and they are identical (and both donot contain > iso-2022-jp). > > Is this in anyway related to the above problem ? > > Try this on linux and z/OS. I guess they are not > identical. > > use Encode; > use Encode::JP; # load JP encodings including > iso-2022-jp > print Encode->encodings(); The above gives different results on linux and ebcdic. I am testing this with iso-2022-jp encoding : ------------------------ use encoding 'iso-2022-jp'; $a = "^[$B$!^[(B"; print "a : $a\n"; ------------------------ On linux, I get : a : ^[^[(B /* Why is the '(B' shown? Isnt this just an escape char to switch over to ASCII ? */ On ebcdic, I get : Malformed UTF-8 character (unexpected end of string) at /u/isldev2/tmp_dbg/perl-5.8.7/lib/utf8_heavy.pl line 330. Malformed UTF-8 character (unexpected continuation byte 0x6a, with no preceding start byte) in pattern match (m//) at /u/isldev2/tmp_dbg/perl-5.8.7/lib/utf8_heavy.pl line 337. Malformed UTF-8 character (unexpected continuation byte 0x6a, with no preceding start byte) in pattern match (m//) at /u/isldev2/tmp_dbg/perl-5.8.7/lib/utf8_heavy.pl line 337. -- and some junk data. Seems like in "$B$!^[(B" above, $! and ^[ are incorrect two byte sequences on ebcdic. However, $! donot translate into printable characters on cp-1047 . What do we replace them by ? I tested again with : --------------------------------- use encoding 'iso-2022-jp'; $a = "$B&&(B"; # && is \x50\x50 on EBCDIC which is valid acc to jis0208.ucm print "a : $a\n"; ---------------------------------- But I still get the messages as above and some junk data in $a which I dont think is the correct o/p. Rajarshi. > Regards, > SADAHIRO Tomoyuki > > > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com