Perl:解码";乱码;unicode字符串
我正在编写一个CGI脚本,它是从一个软件中调用的(我无法更改)。软件提交的变量给我带来了问题,因为如果它们包含非ascii字符,它们看起来如下所示:Perl:解码";乱码;unicode字符串,perl,unicode,Perl,Unicode,我正在编写一个CGI脚本,它是从一个软件中调用的(我无法更改)。软件提交的变量给我带来了问题,因为如果它们包含非ascii字符,它们看起来如下所示: FFFFDEetta er texti meÿfffffff 0ÿffffdslenskum stÿfffffff 6fum 而不是 etta er texti meðslenskum stöfum 我尝试过使用Encode::decode函数,但没有任何效果-我所能做的就是改变ÿ的表示方式 所以是的,我有点被难住了。如何将所有的ÿFFFFDEs更
FFFFDEetta er texti meÿfffffff 0ÿffffdslenskum stÿfffffff 6fum
而不是
etta er texti meðslenskum stöfum
我尝试过使用Encode::decode
函数,但没有任何效果-我所能做的就是改变ÿ
的表示方式
所以是的,我有点被难住了。如何将所有的
ÿFFFFDE
s更改为Þ
s等等,而不单独替换每个非ascii字符(这不是一个解决方案,因为这需要对我甚至不会说的语言起作用)?您的脚本似乎正在处理八位字符。您的CGI和调用程序之间有软件吗?您是如何配置CGI来处理Unicode的?太好了!非常感谢。这是我逃避的unicode越狱。
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'