perlでアクセント付きの文字を大文字にする方法はありますか?
my $string = "éléphant";
print uc($string);
実際に ÉLÉPHANT を印刷するには?
私の perl スクリプトは ISO-8859-1 でエンコードされており、$string は同じエンコードで xml ファイルに出力されます。
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)
してください (どの代替手段を使用しても)。
これをやってみてください:
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