这听起来可能不太重要,但它一直让我很烦恼。自从上周五在Ruby 1.9上发布应用程序以来,我遇到了很多与字符编码相关的小异常。几乎所有的异常都是以下某种变化:
Encoding::CompatibilityError: incompatible character encodings: ASCII-8BIT and UTF-8
我们有着广泛的国际用户群,因此很多名字都包含umlauts等字符。如果我在一堆地方修复模板以使用force_encoding,那么它就会出现在flash消息助手中,诸如此类。目前看来,我已经解决了我知道的所有问题,通过在一个地方打补丁修补ActiveSupport的字符串连接,然后在每个源文件的顶部设置
# encoding:utf-8
。但是,我必须记得为现在和将来做的每个Ruby项目的每个文件都这样做,以避免字符串赋值问题,这种感觉让我感到不舒服。我读过关于-Ku 开关的内容,但是似乎所有的都警告说它是用于向后兼容的,并且随时可能消失。因此,我的问题是针对1.9有经验的人:是否真的需要在我的每个文件中设置
#encoding
?是否有合理的方法可以全局执行此操作?或者更好的方法是在绕过内部/外部默认值的非文字值字符串上设置默认编码?提前感谢任何建议。