我有一个正在扩展到英国的应用程序,我需要添加对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
答案 0 :(得分:5)
Unicode::String很古老,旨在为旧版Perls添加Unicode支持。现代版本的Perl(5.8.0及更高版本)具有本机Unicode支持。查看Encode模块和:encoding图层。您可以使用perldoc Encode::Supported
获取Perl中支持的编码列表。
基本上,你只需要在输入和放大器上解码/编码为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
答案 1 :(得分:0)
在perldoc Encode ::支持它被称为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.