Unicode%uXXXX编码/解码Perl中的XS模块

时间:2012-01-19 12:48:01

标签: perl unicode encoding

是否有任何Perl XS模块具有高速子程序,适合编码/解码unicode cookie(特别是Firefox)中的非标准%uXXXX unicode字符?

解码:input = ...%uXXXX ...,output =正常的utf8 Perl字符串
encoding:input =普通的utf8 Perl字符串,输出= ...%uXXXX ...

现在我正在使用以下代码解码这些字符串:

    $string =~ s/%u([A-Fa-f0-9]{4})/chr(hex($1))/eg;

但是有一个C实现的版本会很好。

2 个答案:

答案 0 :(得分:2)

此特定格式本身与cookie无关,但是应用于cookie的常见编码形式之一。它由JavaScript函数escape()生成。它看起来很像URL编码,但它不兼容; JS作者确实需要停止使用它。

URI::Escape::JavaScript 有一个实现可以重现unescape算法。它与您的方法基本相同,但也处理两位数的%xx模式。

尝试将JS-escape编码视为URL编码扩展的模块可能会因+字符的可能不同处理而跳闸。

我怀疑任何应用程序都会花费足够的时间对其进行解码,以使其值得在C中实现,真的。

答案 1 :(得分:0)

两个怎么样?


URL::Encode::XS也存在,但不符合要求。