邮件不可读字符- unicode


mailto unreadable characters - unicode

我在我的网站中使用mailto URI方案来发送当前页面的电子邮件。

问题是我用印地语作为邮件链接的主题

例子
<a href="mailto:test@gmail.com?subject=मानक हिन्दी">Testing</a>

点击链接时,前景(版本6)打开,它会显示一些不可读字符作为主题,而不是"मानकहिन्दी"即我""¤®一¤¾一¤¨¤•一个¤¹一个害怕¤¤¨一¥¤¦一¥€ "

我正在使用PHP,所以我尝试使用urlencode, utf8_encode和其他类似的函数,它是没有用的。页面的默认字符集是UTF-8

<<p>当我直接粘贴文本strong>मानकहिन्दी,它的工作原理。

但是我需要它作为一个mailto链接…

不幸的是,这只能在Outlook端通过设置选项'允许UTF-8支持mailto:协议'来修复。(2010年在选项->高级->国际选项下)

否则,在默认情况下,Outlook将使用用户特定于地区的桌面默认编码(' ANSI '代码页),该编码永远不会是UTF-8。这使得在mailto: URL中使用非ascii字符变得非常不可靠,以至于实际上毫无用处。(甚至超过subject=的正常不可靠性)

一般来说,对非ascii字符串进行url编码的想法是正确的:使用像: 这样的URI
<a href="mailto:test@gmail.com?subject=%E0%A4%AE%E0%A4%BE%E0%A4%A8%E0%A4%95%20%E0%A4%B9%E0%A4%BF%E0%A4%A8%E0%A5%8D%E0%A4%A6%E0%A5%80">Testing</a>

比使用原始Unicode的IRI格式更可靠。但是这并不能解决Outlook的问题。

据我所知,旧的outlook使用本地编码而不是Unicode用于电子邮件,因此任何Unicode字符串都会被打乱-可能有一个选项来设置mailto编码-但不确定

正如bobince所说,Outlook有其局限性。微软已经发布了文档,声明正确配置的Outlook 2003和2007附加到正确配置的Exchange服务器将默认支持Unicode,但这对一般公众来说并没有真正的帮助。

作为参考,标准"你想参考的是RFC 2047。

我实现的解决方案是绕过这个限制(仅针对欧洲语言和口音,而不是像印度语这样的外来语言)是使用web表单而不是mailto:链接。它需要在服务器端进行更多的设置,但可以让您对联系过程有更多的控制。