html - iOS Mail 中电子邮件的损坏的 html/文本编码:西班牙语内容中的中文符号
问题描述
我们正在发送西班牙语的 HTML 电子邮件,但是 Apple iOS 邮件应用程序错误地显示了它。应用程序将西班牙国家字符呈现为汉字(通过将单个字符与以下字符合并)。
我们注意到邮件的页脚没有正确编码(而不是使用&#XXX
国家字符,我们直接使用字符而不编码) -但是即使一半未编码但我删除了定义的 CSS 的一半,电子邮件也会正确呈现上课(┛ಠДಠ)┛彡┻━┻</p>
这是电子邮件在我的设备上的样子:
这是字符和映射表:
字符打印 | HTML 实体 (UTF) | 原始字符 | 正确的 HTML |
---|---|---|---|
:</td> | : ( U+FF1A ) |
G | ¡ ( U+00A1 ) + G ( G ( U+0047 )) |
烧</td> | 燒 ( U+71D2 ) |
¿N | ¿ ( U+00BF ) + N ( N ( U+004E )) |
塶</td> | 塶 ( U+5876 ) |
ac | á ( U+00E1 ) + c ( c ( U+0063 )) |
嫕</td> | 嫕 ( U+5AD5 ) |
一个 | á ( U+00E1 ) + n ( n ( U+006E )) |
嫢</td> | 嫢 ( U+5AE2 ) |
在 | á ( U+00E1 ) + t ( t ( U+0074 )) |
廨</td> | 廨 ( U+5EE8 ) |
呃 | é ( U+00E9 ) + r ( r ( U+0072 )) |
癃</td> | 癃 ( U+7643 ) |
它 | í ( U+00ED ) + r ( t ( U+0074 )) |
鏮</td> | 鏮 ( U+93EE ) |
上 | ó ( U+00F3 ) + n ( n ( U+006E )) |
🕙 ( U+1F559 ) |
嗯 | ú ( U+00FA ) + 米 ( m ( U+006D )) |
完整的消息正文,问题的重现:
<!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">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />
<title>Test</title>
<style type="text/css">
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {}
.rwdbreak {}
.yahoo_fix {}
.fl {}
.wr {}
.h {}
.maxh {}
.tcenter {}
.valignmiddle {}
.autoh {}
.bold {}
.normal {}
.alignTextLeft {}
.fontsize10 {}
.fontsize11 {}
.fontsize12 {}
.h1 {}
.h10 {}
.h20 {}
.w4 {}
.w10 {}
.w146 {}
.w151 {}
.w320 {}
.w300 {}
.w100pc {}
.padT10 {}
.padR10 {}
.padR20 {}
.padL10 {}
.padL15 {}
.padL20 {}
.bordertopMist {}
.borderbottomMist {}
.borderhide {}
.imagereplace {}
</style>
</head>
<body bgcolor="#ffffff">
<!-- intro -->
<div>
<p>
Hola, John:<br />¡Gracias por tu pedido!<br/>
<span>Tu número de pedido:</span> EXDEV_AAAA00XX<br/>
Comprobar estado del pedido <span>Fecha del pedido:</span>1/1/21
</p>
</div>
<!-- footer -->
<div>
<div>
<p>
¿Necesitas ayuda? Ponte en contacto con nuestro equipo de atención al cliente.<br/>
Este correo electrónico se ha generado automáticamente, por favor, no respondas.<br/>
Todos nuestros productos y servicios están proporcionados por Acme Inc., Street 1, 1000, Estados Unidos.<br/>
<span>Id. de empresa:</span> 00000000 | <span>Número de identificación de Estados Unidos:</span> XX000000000X00
</p>
</div>
<div>
<p>
Política de privacidad y cookies<br/>
Términos y condiciones<br/>
Contáctanos
</p>
</div>
</div>
</body>
</html>
到目前为止,我已经确定了修复渲染的方法,或者:
- 正确编码所有国家字符
- 删除〜一半的样式(为了简洁起见,我使用了空样式,在真实消息中我们有有效的 CSS;当然 - 这些样式很重要)
- 删除
¡
(¡
) 字符似乎也解决了这个问题(但是我不想删除它 - 这不是正确的西班牙语)
尽管第一个选项是最明显的选项,但它仍然没有回答为什么会发生这种情况。如果 Apple 也可以对此发表评论,那就太好了——即使部分邮件未编码,其他应用程序(Outlook、GMail)也能正确呈现电子邮件。
解决方案
推荐阅读
- arrays - 在 Fortran 子例程中使用更大的数组
- javascript - 在 Firefox 扩展中重复任务
- python - Pycharm 无法连接到控制台进程退出代码 -1 远程解释器
- javascript - 检查输入类别菜单时使箭头图标出现 CSS3
- node.js - Nosql/猫鼬——设计
- php - 雄辩的查询来搜索两个表
- javascript - 显示/隐藏谷歌地图 api 不能正常工作
- angular - 如何在 i18n Angular 应用程序中使用语言环境初始化 keycloak?
- python - 收到错误 builtins.AttributeError: 'pygame.font.Font' 对象没有字体属性 'SysFont' 并且不知道为什么?
- python - 无法安装 PyOpenCL