За последние 24 часа нас посетили 16734 программиста и 1694 робота. Сейчас ищут 868 программистов ...

Проблема с кодировкой

Тема в разделе "PHP для новичков", создана пользователем inline, 4 окт 2012.

  1. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    Есть в строке браузера testing.php?%D1%E0%EC%E0%F0%E0
    В testing.php код
    Код (Text):
    1. $_GET = array_keys($_GET);
    2. $tmpl = $_GET[0];
    3. function template ($content)
    4. {
    5. global $tmpl;
    6.  
    7. echo mb_detect_encoding($tmpl);
    пишет что кодировка UTF-8

    смотрю через оперу с кодировкой UTF-8, а мне квадратики вместо текста
    потом в опере перехожу на кодировку windows-1251 и текст отображается без проблем (mb_detect_encoding обманывает)

    дальше делаю $tmpl = iconv ("Windows-1251","utf-8",$tmpl); и получаю "РЎР°РС"

    1. то какая же кодировка у %D1%E0%EC%E0%F0%E0 ?
    2. что сделать чтобы вместо %D1%E0%EC%E0%F0%E0 было в строке Самара (набираю в строке Самара, а браузер сам в %D1%E0%EC%E0%F0%E0 отображает)
     
  2. Samsonov

    Samsonov Активный пользователь

    С нами с:
    31 мар 2011
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    DC
    UTF-8 использует по 2 байта на каждый символ кириллицы, а у вас всего 6 байт на слово «Самара» — нетрудно догадаться, что кодировка там никак не UTF-8, а обычная 1-байтовая.

    Ибо mb_detect_encoding ­— это не волшебная палочка, она лишь умеет определять кодировку из заданного списка возможных вариантов: либо этот список даёте ей вы (вторым аргументом), либо она его выбирает по своему усмотрению. Почитайте документацию на mb_detect_encoding и mb_detect_order.
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768