perl - MediaWiki API 部分名称编码

标签 perl encoding character-encoding mediawiki url-encoding

对于[[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/

相关文章:

php - MySQL -> Php -> HTML 中的字符问题

bash - GNU 并行 : Do not quote Perl replacement string values that contain spaces?

perl - 为什么Perl的SUPER调用不使用箭头方法?

html - 为安全起见对 HTML 输入进行编码时,如何避免对 Ñ 或 ñ 等国际字符进行编码?

php - 如何在 PHP 中替换变音字符或非重音符号?

PHP - 过滤输入的编码问题

php rand vs Perl rand

linux - Perl匿名管道没有输出

ios - 如何从字符串swift中删除\(反斜杠)

python - os.walk 无法正确处理路径中的 unicode 字符