对于 [[测试#?]] ,我从MediaWiki API的action=parse
位获得“测试#.3F ”。这种编码是什么?如何使用Perl的CPAN将其变为人类可读的格式?
URI::Encode适用于解码百分比,但不适用于部分名称。
答案 0 :(得分:4)
它是UTF-8百分比编码,但.
代替%
,空格替换为下划线;此外,折叠多个连续的空格,并保留:
(不编码为.3A
)。
处理它的确切代码是Parser::guessSectionNameFromWikiText(),但是如果你不想深入研究很多代码,请检查旧的MediaWiki版本中更简单的实现(兼容除少数边缘情况),在anchorencode()中:
str_replace( '%', '.', str_replace('+', '_', urlencode( $text ) ) );