Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
кириллический домен: как сделать редирект? |

11.06.2010, 11:26
|
|
Новичок
Регистрация: 13.07.2008
Сообщений: 25
Провел на форуме: 19234
Репутация:
0
|
|
кириллический домен: как сделать редирект?
Добрый день
проблема такая. Делаю редирект со своего сайта на кириллический домен
(например, Президент.рф)
PHP код:
header("Location: http://президент.рф");
(передается кириллицей в простом текстовом виде), приходит в браузер в нем же без изменений.
Опера выдает ошибку "Неверный URL-адрес"
URL-адрес: http://%EF%F0%E5%E7%E8%E4%E5%ED%F2.%F0%F4 содержит символы, недопустимые в позиции, где они обнаружены.
Firefox поступает аналогично.
Подскажите в чем проблема
(т.е. какого черта они преобразуют в urlencode и как от этого избавиться)
Версии браузеров свежие т.е. если я ввожу кириллический домен в строку адреса он открывается нормально
|
|
|

11.06.2010, 11:32
|
|
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме: 3516666
Репутация:
439
|
|
днс не поддерживает кирилицу. по этому существует ascii аналог .xn--p1ai
например: президент.xn--p1ai
Сообщение от fbidesign
до днс дело тут не доходит
веб браузер переизвращает переданный ему адрес
ну тогда пиши так xn--d1abbgf6aiiy.xn--p1ai
Последний раз редактировалось BrainDeaD; 11.06.2010 в 11:52..
|
|
|

11.06.2010, 11:40
|
|
Новичок
Регистрация: 13.07.2008
Сообщений: 25
Провел на форуме: 19234
Репутация:
0
|
|
до днс дело тут не доходит
веб браузер переизвращает переданный ему адрес
|
|
|

11.06.2010, 11:51
|
|
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
Провел на форуме: 5265510
Репутация:
455
|
|
пробуй редиректить на http://xn--d1abbgf6aiiy.xn--p1ai/ (призедент.рф)
|
|
|

11.06.2010, 12:03
|
|
Новичок
Регистрация: 13.07.2008
Сообщений: 25
Провел на форуме: 19234
Репутация:
0
|
|
а как написать конвертер произвольного кириллического адреса в этот вид?
|
|
|

11.06.2010, 12:07
|
|
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме: 3516666
Репутация:
439
|
|
PHP-класс: http://phlymail.com/en/downloads/idna/download/
пример работы: http://idnaconv.phlymail.de/?lang=en
|
|
|

11.06.2010, 12:42
|
|
Новичок
Регистрация: 13.07.2008
Сообщений: 25
Провел на форуме: 19234
Репутация:
0
|
|
спс за линк.
то ли класс глючный то ли хостинг...
вообщем в example при скармливании адреса через веб форму все работает.
Если задаю адрес в php-коде (присваиваю переменной)
PHP код:
$_REQUEST['decoded']="http://президент.рф";
перед if (isset($_REQUEST['encode'])) равно как если брать адрес из БД или еще откуда
то выдает
Conversion from UTF-8 to UCS-4 failed: malformed input at byte 8
т.е. матерится на первую русскую букву "п".
Последний раз редактировалось fbidesign; 11.06.2010 в 12:45..
|
|
|

11.06.2010, 13:11
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
Ключевое слово в ошибке выделено красным
Conversion from UTF-8 to UCS-4 failed: malformed input at byte 8
|
|
|

16.06.2010, 15:21
|
|
Новичок
Регистрация: 13.07.2008
Сообщений: 25
Провел на форуме: 19234
Репутация:
0
|
|
Добавил $row[url]=utf8_encode($row[url]);
На выходе получаю http://xn--4cabbgf6aiiy.xn--hdai (какую-то ерунду)
вместо http://xn--d1abbgf6aiiy.xn--p1ai/
ПОЧЕМУ?
Код:
PHP код:
$row = mysql_fetch_array($res); //http://президент.рф
$row[url]=utf8_encode($row[url]); //http://президент.рф в UTF
require_once('./idna_convert.class.php');
$IDN = new idna_convert();
$decoded = isset($row[url]) ? stripslashes($row[url]) : '';
$encoded = $IDN->encode($decoded); //http://xn--4cabbgf6aiiy.xn--hdai
echo "Location: $encoded <br>";
$decoded = $IDN->decode($encoded);
echo "back: ".utf8_decode($decoded)."<br>"; //http://президент.рф
что самое интересное - обратное пребразование приводит к исходному результату
Последний раз редактировалось fbidesign; 16.06.2010 в 15:23..
|
|
|

17.06.2010, 06:51
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
Че-то вы совсем не то делаете
utf8_encode — Encodes an ISO-8859-1 string to UTF-8
Юзайте iconv()
PS. PHP 5.3.0
Код:
http://ru2.php.net/manual/en/function.idn-to-ascii.php
http://ru2.php.net/manual/en/function.idn-to-utf8.php
Последний раз редактировалось krypt3r; 17.06.2010 в 08:23..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|