坚持使用perl中的API使用UTF-8

坚持使用perl中的API使用UTF-8,perl,Perl,对Perl来说有点陌生。我正在使用PerlWebAPI来获取数据。错误是“application/xml;charset=UTF-8”。我使用了“使用utf8”,但似乎不起作用。它卡住的线路看起来像这样 my @candidates = $c->bookmarks_for(start => 1, tag =>'pubmed'); 你能帮帮我吗 谢谢,, Sammed use utf8; 只有一件事。何时在源代码中使用utf8字符。例如: my $utf8str = "αΩ"

对Perl来说有点陌生。我正在使用PerlWebAPI来获取数据。错误是“application/xml;charset=UTF-8”。我使用了“使用utf8”,但似乎不起作用。它卡住的线路看起来像这样

my @candidates = $c->bookmarks_for(start => 1, tag =>'pubmed');
你能帮帮我吗

谢谢,, Sammed

use utf8;
只有一件事。何时在源代码中使用utf8字符。例如:

my $utf8str = "αΩ";
my $data = MyModule::get_some_data();
对于任何其他物品,例如:

my $utf8str = "αΩ";
my $data = MyModule::get_some_data();
你应该使用

my $utf8data = Encode::decode_utf8($data);
在这种情况下,当您获取一些返回八位字节(字节)的数据时

例如,在读取文本文件时,您可以通过

open($fd, "<", $filename);
$fd->binmode(:utf8); #for marking data as utf8, or
$fd->binmode(:encoding(utf8)); #for marking *and* checking data for utf8 validity too.
这里没有简单的答案。你真的应该读:

Perl在utf8处理方面非常强大,但您必须知道,正确使用它非常重要-不幸的是,这里没有比RTFM更短的方法


注意:这里是在perl中utf8处理的区别啊,perl,我们又见面了。这看起来像是一个内容类型,而不是一个错误。完全错误是什么?实际发生了什么?+1个很好的答案。不过,2011年我们仍然在跨越这些障碍,这让我很恼火。最近的Perl版本本应将UTF8设置为默认值,并要求在需要支持其他内容时执行此类操作。@Sherm,你太天真了:没有灵丹妙药。如果你认为这是一个好主意,只需将你的
PERL\u UNICODE
envariable设置为
SAD
,看看会有什么中断。@Tom-我不指望有什么灵丹妙药。作为一种选择,有旧的行为是很好的。我认为可笑的是,旧的行为仍然是默认的。现在是2011年-Unicode应该是默认值,并且应该有一个PERL_NO_Unicode环境变量可用于仍然无法处理它的脚本。@Sherm Pendley:没有。很多perl程序使用字符串来处理任意二进制数据。这与你想要的完全不一致。