我正在研究一个从一个软件调用的CGI脚本(我无法改变)。软件提交的变量给我带来了问题,因为如果它们包含非ascii字符,它们看起来像这样:
ÿFFFFDEetta er texti meÿFFFFF0 ÿFFFFEDslenskum stÿFFFFF6fum
而不是
Þetta er texti með íslenskum stöfum
。
我已经尝试弄乱Encode::decode
函数,但没有任何结果 - 我所要做的就是改变ÿ
的表示方式。
所以是的,我有点难过。如何将所有ÿFFFFDE
更改为Þ
等等,而不是单独替换每个非ascii字符(这不是解决方案,因为这需要适用于我不喜欢的语言)甚至不说话??
答案 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'