3

perlでアクセント付きの文字を大文字にする方法はありますか?

my $string = "éléphant";

print uc($string);

実際に ÉLÉPHANT を印刷するには?

私の perl スクリプトは ISO-8859-1 でエンコードされており、$string は同じエンコードで xml ファイルに出力されます。

4

2 に答える 2

8

perlUS-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 に答える