2

データベースからテキストを取得して処理し、プレーン テキストとして HTML メール クリエーターにアップロードしています。メール ツールは社内用です。単純な HTML タグを使用できますが、ASCII 以外の文字を処理することはできません。それらは¿エンドユーザーに関して表示されます。私が取り組んでいるものの例として、データベースからのソース テキストは次のようになります。

The café was…<br/>“delicious”.

私の望ましい出力は

The caf&eacute; was&hellip;<br/>&ldquo;delicious&rdquo;.

HTMLEntitiesのような HTML エンティティ エンコーダーを使用すると、タグ ブラケット (<>) を含むすべてがエンコードされます。HTMLEntities を使用した出力は次のとおりです。

The caf&eacute; was&hellip;&lt;br/&gt;&ldquo;delicious&rdquo;.

上記を HTML メール ツールにアップロードすると、エンド ユーザーのメールに次のように表示されます。

The café was…&lt;br/>“delicious”

タグはそのままにして、非 ASCII 文字を HTML エンティティとしてエンコードするという、両方の長所を活かす方法はありますか? HTMLEntities を引き続き使用して、単にgsub;を使用することもできます。このようなもの:

coder = HTMLEntities.new
string = "The café was…&lt;br/>“delicious”."
coder.encode(string, :named).gsub(/&lt;/, "<").gsub(/&gt;/, ">")
#=> "The caf&eacute; was&hellip;<br/>&ldquo;delicious&rdquo;."

これは私にはかなり壊れやすいようです。それを行うより良い方法はありますか?

4

1 に答える 1

0

データのエンコードを確認してみてください!
データベースがデータを UTF-8 で保存していることを確認し、以下を追加します。

# encoding: UTF-8

Rubyファイルの先頭に。

于 2012-06-18T21:27:30.300 に答える