我尝试将一些包含变音符的参数发布到url (PHP脚本)。所以我要转义参数。但是Ruby返回了一个意想不到的字符串。
PHP:urlencode("äöü");
输出:% E4%F6%FC
和RoR:
URI.escape("äöü")
输出:% C3%A4%C3%B6%C3%BC
或:
CGI.escape("äöü")
输出:% C3%A4%C3%B6%C3%BC
我正在Rails 3.0.5和Ruby 1.9.2上工作,我的应用程序设置为UTF-8。我的错在哪里?我该怎么办?
谢谢安迪
欢迎来到字符串编码的奇妙世界。正如您所注意到的,Ruby配置为UTF-8,而您安装的PHP看起来像是在尝试使用ISO 8859-1进行编码。
要解决这个问题,您需要确保两个脚本都使用相同的编码操作,或者显式地将URL参数从UTF-8转换为ISO 8859-1。
也许你应该这样写:
CGI.escape("äöü")
如果你得到一个错误尝试要求'cgi'之前。