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

时间:2017-10-31 22:47:09

标签: html html5 html4

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

所以我看维基百科看看它是如何完成这项工作的,但无法弄清楚他们究竟是如何做到的。例如,标题enum-conversion-mappings.xml转换为<map package='android.database.sqlite' class='SQLiteDatabase' fields='OPEN_READWRITE OPEN_READONLY CREATE_IF_NECESSARY NO_LOCALIZED_COLLATORS' enum-name='DatabaseOpenFlags' is-transient='false' /> ,并用作标题DOM的ID。

有没有人对如何做到这一点有任何见解?

1 个答案:

答案 0 :(得分:0)

好吧,我想我已经明白了。维基百科使用Latin-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,这与维基百科上显示的内容相匹配。此外,拉丁字符不受影响。