我想保存一个包含阿拉伯字符的维基百科链接。
在我的控制台我可以做
> title = "The Broken Wings / الأجنحة المتكسرة"
=> "The Broken Wings / الأجنحة المتكسرة
它以英语和阿拉伯语正确返回。但是,如果我尝试保存链接,则会对阿拉伯字符进行编码。当我尝试输入此链接时:
https://ar.wikipedia.org/wiki/الأجنحة_المتكسرة
它更改为 https://ar.wikipedia.org/wiki/%D8%A7%D9%84%D8%A3%D8%AC%D9%86%D8%AD%D8%A9_%D8%A7%D9%84%D9%85%D8%AA%D9%83%D8%B3%D8%B1%D8%A9
如何按原样保存链接?
最佳答案
我假设“控制台”是指 Rails 控制台。 Ruby(自 2.0 起)使用 UTF-8 作为其默认字符编码。这意味着它可以本地处理通用字符集(又名 Unicode)字符。因此,当您在 Rails 控制台中处理阿拉伯字符串时,不会发生任何转换。
但是,对于 URI(统一资源标识符——简单地说是 URL 的“路径”部分),标准 (RFC3986) 规定只允许使用 US-ASCII 和一些特殊字符。您可以 使用其他字符来指定位置(所谓的国际化资源标识符),但只有某些系统本身理解 IRI。否则,它们会被转换为称为“百分比编码”的字节编码,这就是您在维基百科 URL 中看到的内容。
此 introduction更完整地解释了多语言网络寻址的工作原理以及 IRI 和 URI 之间的转换如何与百分比编码一起工作。
关于ruby-on-rails - Ruby on Rails - 阿拉伯文本有时会被编码,而有些则不会 - 为什么以及如何修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62560183/