【发布时间】:2017-09-24 02:10:19
【问题描述】:
因为在电子邮件地址的本地部分中可能有元音变音(例如öäü),我需要将它们转换为 ascii,因为 Zend-Mail 无法处理它 - 它总是抛出无效的标头异常。
所以有这个 php 函数 idn_to_ascii 将域名转换为 IDNA ASCII 格式。问题是我不确定如何正确使用它。
让我们使用这个电子邮件地址:testö@domain.com
// doesn't work (unknown error):
idn_to_ascii('testö@domain.com') --> xn--test@domain-ufb.com
如果我只是转换电子邮件地址的本地部分,它似乎可以工作:
idn_to_ascii('testö') --> xn--test-8qa@domain.com
但是如果域部分也包含变音符号怎么办?
例如testö@domainö.com
我应该这样做吗?
idn_to_ascii('testö').'@'.idn_to_ascii('domainö.com')
另外在 php-homepage 上有人写了一条评论说你必须跳过高级域部分(而且官方文档是错误的): see here
idn_to_ascii('domainö') // right
idn_to_ascii('domainö.com') // wrong
我现在很困惑:|
有人有这方面的经验吗?最糟糕的是:我什至无法测试它,因为我没有 Umlute 的电子邮件地址。
【问题讨论】:
-
尽管有 16 票,但我不会太认真地对待用户评论。他似乎对基本文本编码的工作原理只有一个模糊的概念,所以我不相信更高级别的信息。
-
请问你打算用这个做什么?utf-8
.com到 ASCII 仍然是.com我想。 -
正在寻找相同的答案,您能帮帮我吗?