Есть в строке браузера testing.php?%D1%E0%EC%E0%F0%E0 В testing.php код Код (Text): $_GET = array_keys($_GET); $tmpl = $_GET[0]; function template ($content) { global $tmpl; 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 отображает)
UTF-8 использует по 2 байта на каждый символ кириллицы, а у вас всего 6 байт на слово «Самара» — нетрудно догадаться, что кодировка там никак не UTF-8, а обычная 1-байтовая. Ибо mb_detect_encoding — это не волшебная палочка, она лишь умеет определять кодировку из заданного списка возможных вариантов: либо этот список даёте ей вы (вторым аргументом), либо она его выбирает по своему усмотрению. Почитайте документацию на mb_detect_encoding и mb_detect_order.