在邮件程序中对不同的语言使用不同的字符编码

Use different character encoding for different languages in mailer

我目前正在开发一个多语言网站,该网站现在在原来的日语和英语语言的基础上增加了中文支持。不幸的是,我们一直在使用 charset: 'ISO-2022-JP 直到现在,这意味着许多汉字将在发送给用户的电子邮件中呈现为问号。理想的解决方案是使用 UTF-8,尽管不幸的是这对日文字符有一些问题。

我已经有了用于发送与用户语言相关的电子邮件的代码:

def set_language
  language_mapping = {
    0 => "ja",
    1 => "en",
    2 => "zh"
  }
  used_language = @reservation.user.language
  I18n.locale = language_mapping[used_language]
end

有什么方法可以为要连接到此的字符集添加某种条件吗?目前,我的邮件助手有 charset: 'ISO-2022-JP',但我想为中文 ('zh') 或英文 ('en') 组中的任何用户使用 UTF-8。一种简单的方法是每次都手动添加字符集,但这似乎不是最 "DRY" 的方法。

为清楚起见编辑:charset: 'ISO-2022-JP'行在顶部的默认设置中。

如果这是一个非常愚蠢的问题,请提前致歉,但我似乎根本无法弄清楚。

最终找到了一个非常简单的解决方案。应用程序默认是 UTF-8,所以我只是将它添加到任何需要 ISO-2022-JP 的邮件程序中:

charset: (@reservation.user.language == 0 ? 'ISO-2022-JP' : 'UTF8'),