Rails 2.3.2 / Ruby 1.8.6编码问题 – ActionController返回UTF-8?
我有一个非常简单的关于编码的Rails问题,我无法找到答案。
环境:Rails 2.3.2 / Ruby1.8.6
我目前没有在Rails环境中设置任何编码选项,已将所有内容保留为默认值。
如果我从文本文件中读取磁盘中的字符串 – 并使用Apache / Phusion通过Rails渲染:文本function发送它,客户端应该使用什么编码?
谢谢你的任何答案,
自从关于Rails 1.2以来,Rails将Ruby 1.8的$ KCODE魔术变量设置为“UTF8”。 它包括ActiveSupport :: CoreExtensions :: String :: Multibyte,以修复其他模糊的每字符/每字节运算符的问题。 你的文本文件应该是UTF-8,Ruby会传递它,你的应用程序布局应该指定一个META标记,声明文档的字符集也是UTF-8:
然后它应该都“正常工作”,但下面描述了一些问题。
如果你在Mac上,在Terminal.app中运行“脚本/控制台”,然后将不常见的字符序列直接粘贴到终端,例如字符查看器,这是一种很好的方式,可以让你自己满意地演示并certificate这一点,因为整个操作系统在UTF-8中工作。 我不知道Windows或任意Linux发行版的等价物是什么。
例如,“⇒” – RIGHTWARDS DOUBLE ARROW – 是Unicode 21D2,UTF8 0xE2(226),0x87(125),0x92(146)。 如果我将其粘贴到终端并询问字节值,我得到预期的结果:
>> $KCODE => "UTF8" >> "⇒" => "\342\207\222" >> puts "⇒" ⇒
…但…
>> "⇒"[0] => 226 >> "⇒"[1] => 135 >> "⇒"[2] => 146 >> "⇒"[3] => nil
请注意您仍然使用“[]”获取字节访问权限。 如果你想进行字符串操作,请参阅Rails API中的多字节扩展文档(适用于Rails 2.2,例如http://railsapi.com/ ),否则像“foo.reverse”这样的东西会做错事; “foo.mb_chars.reverse”通过使用“mb_chars”代理使其正确。
- 如何使用ruby获得两个坐标之间的汽车路线?
- 是否有可能让Capistrano通过反向SSH隧道进行结账?
- Heroku中的SSL与自定义域
- has_many同时尊重factory_girl中的构建策略
- 如何找到声明ruby方法的位置?
- rails如何使用部分匹配删除缓存键
- SimpleForm + ClientSideValidations + bootstrap – 表单上没有validation – 所有输入都被接受
- Preloader不会忽略websocket – pace js
- Rails ActiveJob – 在ActionMailer :: DeliveryJob中处理exception的好方法是什么