使用Perl将有重音符号的字符转换为小写

4
我有一组像这样的带重音符号的字符。
我想将大写的带重音符号字符转换为小写。我使用了lc运算符,但是我得不到预期的输出。
例如,我想将Â转换为â
如果我取一个XML实体,比如&#x00C2,如果我将其转换为小写,它应该变成&#x00E2

你可能需要定义自己的映射 - merlin2011
它们不是特殊字符,而是带重音的字符。 - Toto
3个回答

6
#!/usr/bin/perl
use warnings;
use strict;
use Encode qw(encode decode);

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

# Byte strings:
print lc $str; # prints 'Ä', lc didn't have any effect

# text strings::
my $text_str = decode($enc, $str);
$text_str = lc $text_str;
print encode($enc, $text_str); # prints 'ä', lc worked as expected

尝试一下,这可能有效。

谢谢@user3916803,我得到了结果。 - depsai
这在我的系统 - Solaris 10,Perl 5.12.3下无法运行...输出为Ä�。 - Randall

2

2
 use locale;    
 my $low=lc(\xC2);
 my $up=uc(\xE2);

试试这个,它可能会对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接