【问题标题】:Perl: Decoding "garbled" unicode stringsPerl:解码“乱码”的 unicode 字符串
【发布时间】:2011-11-26 20:05:17
【问题描述】:

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

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

而不是

Þetta er texti með íslenskum stöfum

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

所以是的,我有点难过。我该怎么做才能将所有 ÿFFFFDEs 更改为 Þs 等等,而不是单独替换每个非 ascii 字符(这不是解决方案,因为这需要适用于我什至不会说的语言)?

【问题讨论】:

  • 您的脚本似乎正在处理八位字节。您的 CGI 和调用程序之间是否有软件?你是如何配置 CGI 来处理 Unicode 的?

标签: perl unicode


【解决方案1】:
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'

【讨论】:

  • 完美!谢谢你。是 unicode-escape 让我无法理解。
猜你喜欢
  • 2014-12-03
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
  • 2011-06-11
相关资源
最近更新 更多