On Wed, 3 Jan 2001, Chris Mealy wrote:

> 
> 
> Based on the perl unicode faq, I expected this to work:
> 
> sub shift_jis_to_utf8 {
>     my ($shift_jis) = @_;
> 
>     my $encoding = 'Shift-JIS';
>     my $Map = new Unicode::Map({ ID => $encoding });
>     my $map_out = $Map->to_unicode($shift_jis);
>     my $us = Unicode::String->new($map_out);
>     my $us_utf8 = $us->utf8;
> 
>     return $us_utf8;
> }
> 
> but it doesn't.  What's the right way to convert SJIS to UTF-8 with perl?

Go up an abstraction layer. The modules 'Unicode::Map', 'Unicode::Map8'
and 'Jcode' cover different sections of the Unicode problem - none of them
covers all of it (for the section you are in, 'Jcode' is the relevant low
level module rather than Unicode::Map). 'Unicode::MapUTF8' handles the
problem by abstracting the disparate implementations away from the
programmer into a unified API layer:

use Unicode::MapUTF8 qw(to_utf8);

my $utf8_string = to_utf8({ -string => $sjis_string, 
                           -charset => 'sjis',
                         });

-- 
Benjamin Franz

... with proper design, the features come cheaply. This 
approach is arduous, but continues to succeed.

                                     ---Dennis Ritchie

Reply via email to