Perl:latin1模块中的字符串文字 – 我想要utf8
在Date :: Holidays :: DK模块中,某些丹麦假期的名称是用Latin1编码编写的.例如,1月1日是’Nyt?rsdag’.为了获得正确的utf8编码字符串,我应该如何处理$x以下?
use Date::Holidays::DK; my $x = is_dk_holiday(2011,1,1); 我在使用Date :: Holidays :: DK之前/之后尝试了使用utf8和no utf8的各种组合,但它似乎没有任何效果.我也试图使用Encode的解码,没有运气.进一步来说, use Date::Holidays::DK; use Encode; use Devel::Peek; my $x = decode("iso-8859-1",is_dk_holiday(2011,1) ); Dump($x); print "January 1st is '$x'n"; 给出输出 SV = PV(0x15eabe8) at 0x1492a10 REFCNT = 1 FLAGS = (PADMY,POK,pPOK,UTF8) PV = 0x1593710 "Nyt303245rsdag" [UTF8 "Nytx{e5}rsdag"] CUR = 10 LEN = 16 January 1st is 'Nyt sdag' (t和s之间的字符无效). 解决方法
正确. utf8 pragma仅表示程序的源代码是用UTF-8编写的.
你没有正确地理解这一点,你实际上是做对了.您现在拥有一串Perl字符并可以对其进行操作.
你也解释这个错误,它实际上是?字符. 您想输出UTF-8,因此您缺少编码步骤. my $octets = encode 'UTF-8',$x; print $octets; 有关编码主题的介绍,请阅读http://p3rl.org/UNI.您总是必须明确地或隐含地解码和编码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |