2

对于[[Test#?]],我从一点 MediaWiki API 中得到“ Test#.3F ”。action=parse这种编码是什么?如何使用PerlCPAN将其转换为人类可读的格式?

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

4

1 回答 1

4

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

处理它的确切代码是Parser::guessSectionNameFromWikiText(),但是如果您不想深入研究大量代码,请在anchorencode中检查较旧的MediaWiki版本(兼容,除了一些边缘情况)中更简单的实现() :

str_replace( '%', '.', str_replace('+', '_', urlencode( $text ) ) );
于 2013-02-28T21:57:22.353 回答