mailto不可读的字符 - unicode

时间:2011-11-10 15:36:51

标签: php html unicode hyperlink mailto

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

问题是我使用印地语作为mailto链接中的主题

实施例

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

点击链接后,Outlook(版本6)会打开并显示一些不可读的字符作为主题,而不是“मानकहिन्दी”,即我得到“'मठ¾à¤¨à¤•à¤¹à¤¿à¤¨à¥à¤|à¥

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

当我直接粘贴文字मानकहिन्दी时,它可以正常工作。

但我需要它作为mailto链接......解决方案是什么?

3 个答案:

答案 0 :(得分:4)

不幸的是,这只能通过设置“允许对mailto:protocol的UTF-8支持”选项在Outlook端修复。 (2010年,这是选项 - &gt;高级 - &gt;国际选项。)

否则,默认情况下,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问题。

答案 1 :(得分:0)

据我所知,较旧的前景是使用本地编码而不是Unicode来发送电子邮件,因此任何unicode字符串都会被加扰 - 可能有一个选项来设置mailto的编码 - 但不确定

答案 2 :(得分:0)

正如博森所说,Outlook有其局限性。 Microsoft published documentation表示正确配置的Outlook 2003和2007连接到正确配置的Exchange服务器将默认支持Unicode,但这对公众没有帮助。

作为参考,您想要引用的“标准”是RFC 2047

我为解决这个限制而实施的解决方案(仅限欧洲语言和口音,而不是像印地语一样充满异国情调)是使用网络表单而不是mailto:链接。它需要在服务器端进行更多设置,但可以让您更好地控制联系过程。