不兼容的字符编码:Windows-1252和UTF-8 yml文件



我使用的是Apatana Studio 3.0。非ASCII字符,如ü,在de.yml和oher文件中可用。它们是否需要额外的编码值?我在特定的控制器中有# encoding: utf-8,它适用于除index.html.erb之外的所有页面

Encoding::CompatibilityError in Home#index
incompatible character encodings: Windows-1252 and UTF-8 

de.yml中的翻译字符串为:

de:
display_eula: EULA für Applikation

注意:上面的字符串在其他页面上正确呈现,只是不适用于index.html.erb

源脚本的字符编码与对从磁盘和其他源读取的文件执行I/O之间存在差异。

# encoding: utf-8这样的魔术线告诉Ruby,源文件本身具有超出正常ASCII范围的UTF-8编码字符。这样Ruby就可以正确地解释源文件中的固定字符串和多字节字符。

对于I/O流,您需要告诉Ruby如何解释传入/传出数据。IO.new及其相关方法采用一个可选参数,说明传入/传出数据流编码是什么

从磁盘、套接字或管道读取的YAML、JSON、HTML、XML和其他文件类型如果不是纯ASCII,则容易出现编码问题。Ruby有一套非常好的工具,可以进行动态转换,或者在字符串进入内存后进行转换。如果你没有告诉Ruby该期待什么,或者没有转化为它所期待的,它会抱怨,就像你看到的那样。

James Gray发表了一系列关于Ruby中处理Unicode和多字节字符集的文章。这件事陷入了困境,因为这不是一个容易的话题,但他在解释事情方面做得很好。

问题是来自AWS-SimpleDB的数据(需要更改为string.encode("utf-8")。尽管如此,感谢您的努力。

相关内容