Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Разная кодировка в адресной строке и в ссылках
Форумы портала PHP.SU » » Кодировки и все смежное » Разная кодировка в адресной строке и в ссылках

Страниц (1): [1]
 

1. zusicks438 - 14 Апреля, 2013 - 17:53:53 - перейти к сообщению
Доброго времени суток.

Методом GET передаю кириллический параметр, допустим, так:
Цитата:
http://url.com/list.php?okrug=ЦО

Естественно, браузер передает вот это:
Цитата:
http://url.com/list.php?okrug=%D6%CE

Я это дело перегоняю в нормальный UTF-8:
PHP:
скопировать код в буфер обмена
  1. $_GET['okrug'] = urldecode($_GET['okrug']);
  2. $_GET['okrug'] = iconv("windows-1251", "UTF-8", $_GET['okrug']);


Все нормально, работает.

Проблема в том, что потом нужно вот этот параметр вывести в ссылку на странице, примерно так:
PHP:
скопировать код в буфер обмена
  1. echo '<a href="http://url.com/list.php?okrug='.$_GET["okrug"].'">Текст ссылки</a> ';


Но выводится она уже в таком виде:
Цитата:
http://url.com/list.php?okrug=%D0%A6%D0%9E


А мне нужно %D6%CE. Если честно, не совсем понимаю, что происходит. Думал, что это UTF-8 нужно снова перевести в Win1251, но тогда кракозябры получаются еще длиннее.

Не поможете найти верное решение? Огорчение
(Добавление)
Все, разобрался. Нужно перед выводом ссылки сделать обратное преобразование вот таким способом:
PHP:
скопировать код в буфер обмена
  1. $_GET['okrug'] = iconv("UTF-8", "windows-1251", $_GET['okrug']);
  2. $_GET['okrug'] = urlencode($_GET['okrug']);


Совсем забыл про encode и decode! Улыбка

 

Powered by ExBB FM 1.0 RC1