MediaWiki API部分名称编码

时间:2013-02-28 05:57:53

标签: perl encoding character-encoding mediawiki url-encoding

对于 [[测试#?]] ,我从MediaWiki API的action=parse位获得“测试#.3F ”。这种编码是什么?如何使用PerlCPAN将其变为人类可读的格式?

URI::Encode适用于解码百分比,但不适用于部分名称。

1 个答案:

答案 0 :(得分:4)

它是UTF-8百分比编码,但.代替%,空格替换为下划线;此外,折叠多个连续的空格,并保留:(不编码为.3A)。

处理它的确切代码是Parser::guessSectionNameFromWikiText(),但是如果你不想深入研究很多代码,请检查旧的MediaWiki版本中更简单的实现(兼容除少数边缘情况),在anchorencode()中:

str_replace( '%', '.', str_replace('+', '_', urlencode( $text ) ) );