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 回答