3

我正在使用Rails 3.1(3.1.1 RC1),并且我配置了ActionMailer以使用windows-1252作为默认编码。 (外部要求)如何在Rails 3中强制对HTML电子邮件进行字符编码?

这与纯文本邮件完美结合,但只要我发送HTML邮件,文本就会再次转换为UTF-8,从而导致出现乱码文本。

这是我所做的/发现的。

  • 我配置的默认编码:ActionMailer::Base.default :charset => 'windows-1252'
  • 我.erb模板实际上是windows-1252编码。
  • 我添加了所需标记<%# encoding: windows-1252 -%>作为模板的第一行。
  • 邮件有一个正确的内容类型头:Content-Type: text/html; charset="windows-1252"

下面的代码片段我用来发送邮件:

mail(:to => ..., :subject => "...") do |format| 
    format.html 
end  

我怀疑,不知怎的,在邮件处理的Rails /的ActionMailer决定将字符转换为UTF-8。我该如何改变它?

回答

-1

你没有提到你使用的是什么版本的Ruby(1.9.x和1.8.x不同),但假设你使用的是1.9版本,你可以在application.rb中设置以下内容:

config.encoding = "windows-1252" 

这将设置应用程序范围的编码。 (默认为utf-8)