对于[[Test#?]],我从 MediaWiki API 的 action=parse
位获得“Test#.3F”。这种编码是什么以及如何使用 Perl 将其转换为人类可读的格式的CPAN ?
URI::Encode适用于百分比解码,但不适用于部分名称。
最佳答案
它是UTF-8百分比编码,但用.
代替%
,并且空格替换为下划线;此外,多个连续的空格被折叠,并且 :
被保留(未编码为 .3A
)。
处理它的确切代码是 Parser::guessSectionNameFromWikiText() ,但如果您不想深入研究大量代码,请检查较旧的 MediaWiki 版本中更简单的实现(除了少数边缘情况外兼容),在 anchorencode() 中:
str_replace( '%', '.', str_replace('+', '_', urlencode( $text ) ) );
关于perl - MediaWiki API 部分名称编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15128485/