perl - 为什么 Perl 的 Text::Capitalize 将 "Juvénal"变成 "JuvéNal"?

标签 perl utf-8 capitalization

我正在使用Text::Capitalize尝试对网页中的一些 UTF-8 编码名称进行标题大小写(使用 WWW::Mechanize 下载,但我没有得到我期望的结果。

例如,网页上的名称是“KAJELIJELI, Juvénal”,但 capitalize_title 返回“Kajelijeli, JuvéNal”(注意大写 N)。

我尝试过 use utf8; 并将 $word_rule 正则表达式中的 \w 更改为 [:word:] 但都没有改变capitalize_title 的输出。

有人知道我怎样才能让它发挥作用吗?

TIA

最佳答案

您一定忘记将输入的二进制模式设置为 utf8,因为该模块工作正常。

示例:

#!perl
use warnings;
use strict;
use Text::Capitalize;
use utf8;
my $test = "KAJELIJELI, Juvénal";
binmode STDOUT, "utf8";
print capitalize_title ($test);

打印

Kajelijeli, Juvénal

关于perl - 为什么 Perl 的 Text::Capitalize 将 "Juvénal"变成 "JuvéNal"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2004257/

相关文章:

html - aria-label 应该大写吗?

perl - 如何提取文本中的所有引文?

mysql - Perl取消引用散列散列数组中的单个元素

python - UTF-8 和 os.listdir()

c++ - 为什么 `wstring_convert` 抛出 range_error?

C++ cout 自动转换字符串?

perl - 使用 Perl/Moose,修饰符返回的值会发生什么情况?

perl - 如何停止 perl 缓冲 ffmpeg 输出

mysql - 在 bash 中将标准输出转换为 utf8

ios - 单词的输入警报自动大写?