3

有没有办法在 perl 中大写重音字符,

my $string = "éléphant";

print uc($string);

所以它实际上打印 ÉLÉPHANT ?

我的 perl 脚本以 ISO-8859-1 编码,$string 以相同编码打印在 xml 文件中。

4

2 回答 2

8

perl只懂 US-ASCII 和 UTF-8,后者需要

use utf8;

如果要将文件保留为iso-8859-1,则需要显式解码文本。

use open ':std', ':encoding(locale)';
use Encode qw( decode );

# Source is encoded using iso-8859-1, so we need to decode ourselves.
my $string = decode("iso-8859-1", "éléphant");
print uc($string);

但最好将脚本转换为 UTF-8。

use utf8;  # Source is encoded using UTF-8
use open ':std', ':encoding(locale)';

my $string = "éléphant";
print uc($string);

如果要打印到文件,请确保:encoding(iso-8859-1)在打开文件时使用(无论您使用哪种替代方法)。

于 2012-11-07T00:41:18.497 回答
3

尝试这样做:

use Encode qw/encode decode/;

my $enc = 'utf-8'; # This script is stored as UTF-8
my $str = "éléphant\n";

my $text_str = decode($enc, $str);
$text_str = uc $text_str;
print encode($enc, $text_str);

输出

ÉLÉPHANT
于 2012-11-07T00:34:38.557 回答