2017-01-17 5 views
0

Я попытался преобразовать домен: http://pfeffermühle.com в правильный домен IDN в виде Punycode. Я использовал vb.net и php, но оба результата неверны.PHP idn_to_ascii/VB.net idn.GetAscii() не приводит к правильному домену PONY CODE/IDN

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

https://www.punycoder.com/

https://www.charset.org/pages/punycode.php?decoded=http%3A%2F%2Fpfefferm%C3%BChle.com&encode=Normal+text+to+Punycode#results

В чем проблема?

Пожалуйста, помогите.

Благодаря

ответ

1

Удалить «Http: //» из строки, его не часть имя_домена, это используется Protocoll.

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); 
+1

добавил РНР к ответу, так что это более полный –

+0

Спасибо очень :) :) – memme

+1

извините, исправить это будет: $ s1 = "hTtps: //pfeffermühle.com"; $ s = отделка ($ s1); if (idn_to_ascii ($ s) <> $ s) { if (substr (strtolower ($ s), 0, 7) === "http: //") { \t $ s = "http:// ". idn_to_ascii (substr ($ s, 7, strlen ($ s) -7)); \t} elseif (substr (strtolower ($ s), 0, 8) === "https: //") { \t $ s = "https: //" .idn_to_ascii (substr ($ s, 8, StrLen ($ s) -8)); \t} } echo $ s. "
" .idn_to_ascii ($ s1); – memme

 Смежные вопросы

  • Нет связанных вопросов^_^