PHP idn_to_ascii / VB.net idn.GetAscii() 不会产生正确的 PUNY CODE / IDN 域
PHP idn_to_ascii / VB.net idn.GetAscii() does not result in correct PUNY CODE / IDN Domain
我尝试转换域:http://pfeffermühle.com
到 Punycode 形式的正确 IDN 域。
我使用了 vb.net 和 php,但是两个结果都不正确。
VB.net:
Dim idn As New System.Globalization.IdnMapping()
Dim punyCode As String = idn.GetAscii(http://pfeffermühle.com)
RESULT: punyCode= xn--http://pfeffermhle-06b.com
PHP:
echo idn_to_ascii('http://pfeffermühle.com');
RESULT: xn--http://pfeffermhle-06b.com
但正确的结果是:http://xn--pfeffermhle-0hb.com
您可以在这里查看:
http://www.idnconverter.se/http://xn--pfeffermhle-0hb.com
有什么问题?
请帮忙。
谢谢
从字符串中删除“http://”,它不是域名的一部分,它是使用的协议。
VB.NET
Dim idn As New System.Globalization.IdnMapping()
Dim punyCode As String = idn.GetAscii("pfeffermühle.com")
Console.WriteLine(punyCode)
Console.WriteLine("http://" & idn.GetUnicode(punyCode))
结果:
xn--pfeffermhle-0hb.com
http://pfeffermühle.com
PHP 来自@memme
$s1 = "hTtps://pfeffermühle.com";;
$s = trim($s1);
if (idn_to_ascii($s) <> $s)
{
if (substr(strtolower($s) , 0, 7) === "http://")
{
$s = "http://" . idn_to_ascii(substr($s, 7, strlen($s) - 7));
}
elseif (substr(strtolower($s) , 0, 8) === "https://")
{
$s = "https://" . idn_to_ascii(substr($s, 8, strlen($s) - 8));
}
}
echo $s . "<br />" . idn_to_ascii($s1);
我尝试转换域:http://pfeffermühle.com 到 Punycode 形式的正确 IDN 域。 我使用了 vb.net 和 php,但是两个结果都不正确。
VB.net:
Dim idn As New System.Globalization.IdnMapping()
Dim punyCode As String = idn.GetAscii(http://pfeffermühle.com)
RESULT: punyCode= xn--http://pfeffermhle-06b.com
PHP:
echo idn_to_ascii('http://pfeffermühle.com');
RESULT: xn--http://pfeffermhle-06b.com
但正确的结果是:http://xn--pfeffermhle-0hb.com
您可以在这里查看:
http://www.idnconverter.se/http://xn--pfeffermhle-0hb.com
有什么问题?
请帮忙。
谢谢
从字符串中删除“http://”,它不是域名的一部分,它是使用的协议。
VB.NET
Dim idn As New System.Globalization.IdnMapping()
Dim punyCode As String = idn.GetAscii("pfeffermühle.com")
Console.WriteLine(punyCode)
Console.WriteLine("http://" & idn.GetUnicode(punyCode))
结果:
xn--pfeffermhle-0hb.com
http://pfeffermühle.com
PHP 来自@memme
$s1 = "hTtps://pfeffermühle.com";;
$s = trim($s1);
if (idn_to_ascii($s) <> $s)
{
if (substr(strtolower($s) , 0, 7) === "http://")
{
$s = "http://" . idn_to_ascii(substr($s, 7, strlen($s) - 7));
}
elseif (substr(strtolower($s) , 0, 8) === "https://")
{
$s = "https://" . idn_to_ascii(substr($s, 8, strlen($s) - 8));
}
}
echo $s . "<br />" . idn_to_ascii($s1);