2

英国に拡張されているアプリケーションがあり、Latin-9Unicodeのサポートを追加する必要があります。私はいくつかのグーグルを行いましたが、プロセスに何が関係しているかについては何も確固たるものではありませんでした。任意のヒント?

ここにいくつかのコードがあります(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

4

2 に答える 2

5

Unicode::Stringは古くからあり、古い Perl に Unicode サポートを追加するように設計されています。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
于 2010-06-14T18:29:28.380 に答える