--- 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 

Reply via email to