Cod*_*Fun 0 perl decoding html-entities
我现在对编码方案感到疯狂.我将在下面陈述我的问题,请提供您的意见.
问题:我有一些输入字符串,如下面的代码所示.最终所需的输出是"Křižovnická190".[你可以在这里解码].我正在使用perl模块来解码这些字符串.以下是我的测试代码:
use HTML::Entities;
binmode STDOUT,":utf8";
$a = "Křižovnická 190";
decode_entities($a);
print $a."\n";
Run Code Online (Sandbox Code Playgroud)
然而输出,我得到的是"Křiovnická19",这意味着"ř"被正确解码,但"ž"不是.我的问题是为什么?然后我尝试了"_decode_entities"方法,我们提供了entity2char哈希,但仍然没有成功.
PS:我必须在这里使用Perl,因为其他遗留API,请在这里帮助我
字符"ž"对应ž于Unicode,而不是ž.158是cp1252中"ž"的编码.
顺便说一句,Clementinum很好.
为清楚起见:
| Grapheme | ? | ž |
|------------+-------------------+-------------------|
| Codepoint | U+0159 (345) | U+017E (382) |
| Escape | ř (ř) | ž (ž) |
|------------+-------------------+-------------------|
| UTF-8 | C5 99 (197 153) | C5 BE (197 190) |
| cp1252 | - | 9E (158) |
| latin2 | F8 (248) | BE (190) |
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅Wikipedia上的HTML十进制字符渲染.重要的是:
(...)对字符128-159的引用通常由宽松的Web浏览器解释,就好像它们是对Windows-1252字符编码中分配给字节128-159(十进制)的字符的引用一样.这违反了HTML和SGML标准,并且字符已经分配给更高的代码点,因此HTML文档作者应该始终使用更高的代码点.例如,对于商标(TM),请使用
™,而不是™.
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |