【发布时间】:2019-06-28 05:57:56
【问题描述】:
我需要在 Ruby 中转换一个包含字符“ö”的 URL。
在 PHP 中,urlencode 返回 ö 的 %F6,这似乎是 ISO 8859 中“ö”的十六进制值。
我尝试了几种不同的方法,但都没有返回正确的字符:
- CGI.escape 'ö' -> %C3%B6
- URI.encode 'o' -> %C3%B6
- ERB::Util.url_encode 'ö' -> %C3%B6
- 'ö'.force_encoding('iso-8859-1') -> \xC3\xB
我应该使用什么方法来获得所需的输出?
-e-
附加要求:
我只需要在url的路径中转换这些字符。冒号、斜杠等应保持不变:
http://example.com/this/is/an/ö
将会
【问题讨论】:
-
你试过这个
'ö'.encode("ISO-8859-1")吗? -
“在 PHP 中,urlencode 返回 ö 的 %F6” – 视情况而定。如果将 UTF-8 字符串传递给 PHP 的
urlencode,它也会返回%C3%B6。
标签: ruby-on-rails ruby encoding iso-8859-1