为什么在解码某些HTML实体而不是其他HTML实体时会出现乱码输出?

时间:2016-10-11 21:11:40

标签: perl decode html-entities

在Perl中,我尝试使用HTML::Entities解码包含数字HTML实体的字符串。一些实体工作,而#34;更新"实体不是。例如:

html_entity_decode

有没有办法解码这些"更新" Perl中的HTML实体?在PHP中,{{1}}函数似乎没有任何问题地解码所有这些实体。

2 个答案:

答案 0 :(得分:5)

解码工作正常。这就是你输出错误的方式。例如,您可能已将字符串发送到终端,而不首先为该终端编码。这是通过以下程序中的if(Input.GetKey (KeyCode.LeftArrow)) { this.transform.localScale -= Vector3.one * scalingSpeed; } else if (Input.GetKey (KeyCode.RightArrow)) { this.transform.localScale += Vector3.one * scalingSpeed; } 编译指示实现的:

open

答案 1 :(得分:1)

确保您的终端可以处理UTF-8编码。看起来它有多字节字符的问题。如果出现宽字符警告,您也可以尝试为STDOUT设置UTF-8。

use strict;
use warnings;
use HTML::Entities;

binmode STDOUT, ':encoding(UTF-8)';

print decode_entities('®');  # returns ®
print decode_entities('Ω'); # returns Ω
print decode_entities('★'); # returns ★

这给了我正确/预期的结果。