我有问题在rails应用程序中处理ruby中的charset,特别是在我的模板中。来自我的数据库的代码工作正常,但是我的视图中的ç~代码不起作用。我在代码中添加了以下代码
我添加了一个这样的函数,但是仍然无法正常工作,我的application.rhtml中有ç~代码无效。
before_filter :configure_charsets
# Configuring charset to UTF-8 def configure_charsets
headers["Content-Type"] = "text/html; charset=UTF-8"
end
我还将meta http-equiv html添加到utf-8和.htaccess参数AddDefaultCharset UTF-8
那仍然没有用,还有其他任何提示吗?
答案 0 :(得分:2)
您使用的文本编辑器是否将特殊字符放入文件(源或视图)中,将这些字符视为UTF-8?例如,如果您使用的是TextMate,则可以故意将文件另存为UTF-8。如果由于某种原因你之前使用了不同的编码(可能是默认编码),那些UTF-8字符可能会在代码编辑阶段进行转码,所以即使渲染过程始终使用UTF-8,它仍然不会工作
此外,如果您正在使用shell中的某些内容,例如vi,或者其他什么,您的终端是否设置为默认接受UTF-8?如果你把它设置为ISO-8859-1或其他什么,你会遇到同样的问题。
答案 1 :(得分:2)
将这段代码放入配置(environment.rb
)
Rails::Initializer.run do |config|
config.action_controller.default_charset = "iso-8859-1"
end
这样就可以了。
此外,删除layouts/application.html
答案 2 :(得分:1)
您的application.rhtml
文件是否使用正确的字符集编写?确保它是UTF-8,而不是ISO-8859-1。
答案 3 :(得分:0)
因此,如果文件内容为UTF-8,并且输出被解释为UTF-8,则介于两者之间的内容正在改变数据。可以给出一个特殊字符的输入字节的十六进制解释(任何非ASCII将至少为UTF-8中的两个字节),以及输出字节或字节的十六进制解释?也许我们可以弄清楚变化是什么,并从那里开始工作。