Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mailto不可读字符-unicode_Php_Html_Unicode_Hyperlink_Mailto - Fatal编程技术网

Php mailto不可读字符-unicode

Php mailto不可读字符-unicode,php,html,unicode,hyperlink,mailto,Php,Html,Unicode,Hyperlink,Mailto,我在我的网站中使用mailto-URI方案发送当前页面的电子邮件 问题是我在mailto链接中使用印地语作为主题 范例 <a href="mailto:test@gmail.com?subject=मानक हिन्दी">Testing</a> 单击链接时,Outlook(版本6)将打开,并显示一些不可读的字符作为主题,而不是“मानक हिन्दी“即我得到”“我得到” 我正在使用PHP,所以我尝试使用urlencode、utf8_encode和其他类似的函数,

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

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

范例

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

单击链接时,Outlook(版本6)将打开,并显示一些不可读的字符作为主题,而不是“मानक हिन्दी“即我得到”“我得到”

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

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


但我需要它作为邮件链接。。。解决方案是什么?

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

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

否则,默认情况下,Outlook将使用用户特定于区域设置的桌面默认编码(“ANSI”代码页),该编码永远不会是UTF-8。这使得在mailto:URL中使用非ASCII字符变得非常不可靠,实际上毫无用处。(甚至比
主题=
的正常不可靠性更高)

通常,对非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问题。

正如bobince所说,Outlook有其局限性。Microsoft声明,连接到正确配置的Exchange服务器的正确配置的Outlook 2003和2007将默认为支持Unicode,但这对一般公众来说并没有帮助

作为参考,您希望参考的“标准”是

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