ruby on rails x charset

时间:2009-05-23 16:38:19

标签: ruby-on-rails ruby character-encoding

我有问题在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

那仍然没有用,还有其他任何提示吗?

4 个答案:

答案 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中的两个字节),以及输出字节或字节的十六进制解释?也许我们可以弄清楚变化是什么,并从那里开始工作。