【问题标题】:Euro Character not displaying properly in HTML message Outlook 2007欧元字符在 HTML 邮件 Outlook 2007 中未正确显示
【发布时间】:2013-12-20 20:11:24
【问题描述】:

我正在发送一封正文中包含 HTML 的电子邮件。以下是让我感到悲伤的片段。

编辑:这是电子邮件的更多内容,已删除敏感信息

MIME-Version: 1.0
From: 
To: 
Date:
Subject:
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width" />
<strong>€3,500</strong>

</body>
</html>

"€" 是欧元符号的 UTF-8 编码。因此,大多数电子邮件客户端似乎都可以很好地呈现欧元字符,除了在 Microsoft Outlook 2007(可能还有更高版本)中,欧元字符显示为这个“€”。

有人知道为什么会这样吗?

【问题讨论】:

  • 您可以发布带有标题的电子邮件来源吗?为什么将欧元符号放在&lt;head&gt; 标签中?为什么你没有body 标签?
  • @klarki,strong 元素不在head 元素中(在&lt;head&gt; 标记中仍然更少)。它隐式打开body 元素。
  • 我更新了源代码,当我剥离所有非问题代码时,我不小心将body标签

标签: html utf-8 outlook


【解决方案1】:

也许你可以试试 &amp;euro; 而不是 '€'

【讨论】:

  • 以及命名实体不可用的数字实体。那么事实上的字符集将完全是 7 位 US-ASCII。
  • 如果这完全是您的问题,请选择我的答案作为接受。谢谢!
【解决方案2】:

邮件的 MIME 标头可能优先于不同客户端中的 HTML 元标记,也可能不优先。你最好确保他们都同意。

:
--mimeboundary
Content-type: text/html; charset=utf-8
Content-transfer-encoding: 8bit

<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
:

【讨论】:

  • 这可能是它!我去看看是不是这个问题!
  • 如果您声明 Content-Transfer-Encoding: 7bit,您就不能期望 UTF-8 能够正常工作。最透明的解决方法是使用Content-transfer-encoding: quoted-printable,然后显然相应地对正文部分进行编码。
【解决方案3】:

你是如何设置 HTML 的?你在设置 HTMLBody 属性吗?在这种情况下,值必须是 UTF-16,因为 IDispatch 友好 COM 中的所有字符串都是 2 字节 UTF-16 字符串。

对特殊字符进行属性 HTML 编码比依赖代码页转换要好得多。

【讨论】:

    猜你喜欢
    • 2013-02-05
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多