Данные из массива $_GET — наполовину правильная кодировка

Тема в разделе "PHP", создана пользователем Albert22, 28 сен 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Всем привет!
    Извлекая $_GET['c'] получаю то, что изображено на вложении (print_r($_GET);).
    Скрипт вызывается посредством mod_rewrite:
    /city_Одесса —» /?c=Одесса
    В httpd.conf 'e:
    Код:
    AddDefaultCharset utf-8
    AddCharset utf-8 *
    <IfModule mod_charset.c>
        CharsetSourceEnc utf-8
        CharsetDefault utf-8
    </IfModule>
    Причём проблемы возникают в Файрфоксе
    Пробовал в Хроме — всё нормально
    Подскажите, что с этим делать?
    Может заголовок какой передать?
     

    Вложения:

  2. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    по ссылке надо передавать в utf8 кодировке, а ты передаешь в cp1251
     
  3. Zogr

    Zogr Постоялец

    Регистр.:
    6 июн 2008
    Сообщения:
    96
    Симпатии:
    7
    Либо UTF-8, либо %-кодирование (как в википедии).
    Второй вариант лучше, потому что UTF-8 может работать не со всеми браузерами/веб-службами, а %-кодирование - это стандарт.
    Для PHP смотрите функции urldecode / urlencode, rawurldecode / rawurlencode), для JS - encodeURIComponent / decodeURIComponent, encodeURI / decodeURI
     
  4. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Спасибо, но я пробовал уже.
    PHP:
    print '<a href="/city_'.urlencode($data['city']).'">'.$data['city'].'</a>';
    Затем тестирую
    PHP:
    $var urldecode($_GET['c']);
    //$var = iconv('cp1251', 'utf-8', $var);
    print_r($var);
    Выводит то же самое.

    Добавлено через 1 минуту
    Скорее всего я делаю что-то неправильно.
    Подскажите необходимые действия и их очерёдность.
     
  5. medvoodoo

    medvoodoo Постоялец

    Регистр.:
    28 мар 2007
    Сообщения:
    89
    Симпатии:
    19
Статус темы:
Закрыта.