2

我有一个正在扩展到英国的应用程序,我需要添加对 Latin-9 Unicode 的支持。我做了一些谷歌搜索,但没有发现关于这个过程涉及什么的可靠信息。有小费吗?

这是一些代码(只是 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是古老的,旨在为旧的 Perls 添加 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 回答
0

在 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.
于 2016-09-23T21:39:48.160 回答