Perl латиница-9?Юникод - нужно добавить поддержку - PullRequest
2 голосов
/ 14 июня 2010

У меня есть приложение, которое расширяется для Великобритании, и мне нужно будет добавить поддержку Юникода Latin-9.Я немного погуглил, но не нашел ничего убедительного в том, что вовлечено в процесс.Любые советы?

Вот некоторый код (только биты для Unicode)

use Unicode::String qw(utf8 latin1 utf16);

# How to call
$encoded_txt = $self->unicode_encode($item->{value});

# Function part
sub unicode_encode {

    shift() if ref($_[0]);
    my $toencode = shift();
    return undef unless defined($toencode);

    Unicode::String->stringify_as("utf8");
    my $unicode_str = Unicode::String->new();


    # encode Perl UTF-8 string into latin1 Unicode::String
    #  - currently only Basic Latin and Latin 1 Supplement
    #    are supported here due to issues with Unicode::String .
    $unicode_str->latin1( $toencode );
    ...

Любая помощь будет большой, и спасибо.

РЕДАКТИРОВАТЬ: Я нашел этосообщение: http://czyborra.com/charsets/iso8859.html

Ответы [ 2 ]

5 голосов
/ 14 июня 2010

Unicode :: String является древним и предназначен для добавления поддержки Unicode для старых Perls.Современные версии Perl (5.8.0 и выше) имеют встроенную поддержку Unicode.Посмотрите на модуль Encode и слой : encoding .Вы можете получить список поддерживаемых кодировок в вашем Perl с помощью perldoc Encode::Supported.

По сути, вам просто нужно декодировать / кодировать в Latin-9 на входе и выходе.В остальное время вы должны использовать нативные строки Perl UTF-8.

# Read a Latin-9 file:
open(my $in, '<:encoding(Latin9)', 'some/file');
my $line = <$in>; # Automatically converts Latin9 to UTF-8

# Write a Latin-9 file:
open(my $out, '>:encoding(Latin9)', 'other/file');
print $out $line; # Automatically converts UTF-8 to Latin9
0 голосов
/ 24 сентября 2016

В perldoc Encode :: Supported это называется ISO-8859-15 (!).Вот несколько сильно урезанных выводов из perldoc:

           Lang/Regions  ISO/Other Std.  DOS     Windows Macintosh  Others
       ----------------------------------------------------------------
       Latin9 [4]    iso-8859-15
       ----------------------------------------------------------------

       [4] Nicknamed Latin0; the Euro sign as well as French and Finnish
           letters that are missing from 8859-1 were added.
...