维基百科使用什么技术将非拉丁字符转换为ID安全



我正在尝试自动生成标题的ID,用作锚链接。因为我们不知道标题是什么语言,所以它应该适用于任何语言,而不是创建非法字符。

所以我在看维基百科,看看它是如何完成这项工作的,但无法弄清楚他们到底是如何做到的。例如,标题Ссылки被转换为 .D0.A1.D1.81.D1.8B.D0.BB.D0.BA.D0.B8 ,并用作标题 DOM 的 ID。

有没有人知道这是如何做到的?

好的,

我想我已经想通了。维基百科使用拉丁语-1编码将文本表示为每个字节的十六进制代码。以下是我编写的一些 Ruby 代码来演示该过程:

# for arbitrary input `text`, force encode with Latin-1
encoded_text = text.force_encoding('iso-8859-1')
# Extract the string as plaintext, with literal hex escape character "/x"
plaintext_encoded_text = /A"(.*)"z/.match(encoded_text.inspect)[1]
# Replace "/x" with "." and spaces with "-"
output = plaintext_encoded_text.gsub('x', '.').gsub(/s/, '-')

此过程将Ссылки转换为.D0.A1.D1.81.D1.8B.D0.BB.D0.BA.D0.B8,这与维基百科上显示的内容相匹配。此外,拉丁字符不受影响。

最新更新