私はUTF-8文字列を持っています:Website • Facebook
それは真ん中の弾丸です別名•
または0xE2 0x80 0xA2
この値はデータベースに正しく保存され、Rails3を使用して画面に正しく表示されます。デフォルト設定を使用するとruby1.9.3が表示されます。
これをHTMLメールで送信しようとしていますが、すべてのことを言って完了すると、受信側にゴミが表示されます。
この背後にあるコードは単純ActionMailer
です。レイアウトにUTF-8コンテンツエンコーディングを含むHTMLメールを送信するためのサブクラス(デフォルトではUTF-8を使用)を設定しています。
email.html.erb
レイアウトファイル:
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="chrome=1,IE=9" />
<meta charset="utf-8">
<%= stylesheet_link_tag "application", :media => "all" %>
</head>
<body class='email'>
<%= yield %>
</body>
</html>
コンテンツは、Webページをレンダリングするのと同じビューを使用しますが、重要な行は次のとおりです。
<p><%= simple_format strip_tags(comment.text) %></p>
、の多くの順列を試しforce_encoding
、encode
冗長なUTF-8エンコーディングをActionMailer
サブクラス、ビューファイルの先頭、およびその他の約12の項目に適用しましたが、何も機能しないようです。
Apple Mailを介して生のhtmlメッセージで表示される重要なHTMLは、次のとおりです。
Website =EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD Facebook
生のメッセージ(上記のリンク)を見ると、これはテキストのみのメッセージでは発生せず、HTMLメッセージでのみ発生します。
TL; DR
ActionMailerは、UTF-8の箇条書き文字0xE2 0x80 0xA2
をガベージに置き換えています。0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD 0xEF 0xBF 0xBD
どうすればこれを修正できますか?