Perl:解码“乱码”unicode字符串

时间:2011-09-28 12:13:36

标签: perl unicode

我正在研究一个从一个软件调用的CGI脚本(我无法改变)。软件提交的变量给我带来了问题,因为如果它们包含非ascii字符,它们看起来像这样:

ÿFFFFDEetta er texti meÿFFFFF0 ÿFFFFEDslenskum stÿFFFFF6fum

而不是

Þetta er texti með íslenskum stöfum

我已经尝试弄乱Encode::decode函数,但没有任何结果 - 我所要做的就是改变ÿ的表示方式。

所以是的,我有点难过。如何将所有ÿFFFFDE更改为Þ等等,而不是单独替换每个非ascii字符(这不是解决方案,因为这需要适用于我不喜欢的语言)甚至不说话??

1 个答案:

答案 0 :(得分:7)

use Encode qw(decode);
use Encode::Escape qw();

$_ = 'ÿFFFFDEetta er texti meÿFFFFF0 ÿFFFFEDslenskum stÿFFFFF6fum';
s/ÿFFFF/\\x/g;
decode('iso-8859-1', decode('unicode-escape', $_));
# returns 'Þetta er texti með íslenskum stöfum'