Добрый день!
Как раскодировать и декодировать URL средствами PHP ? То есть перевести текст в 16-тиричную систему и наоборот.
Функции urldecode, urlencode работают некорректно.
Этот код :
Код (Text):
$encoded_url=»https%3A%2F%2Fexample.com%2Fpage.php%3Fname%3D%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9″; $decoded_url = urldecode($encoded_url); echo $decoded_url;Выдаёт такую строку:
https://example.com/page.php?name=Р СѓСЃСЃРєРёР№А должен выдавать такую строку:
https://example.com/page.php?name=РусскийСтраница имеет кодировку UTF-8.
Также пробовал преобразовывать в UTF-8 строку, таким образом :
$decoded_url = mb_convert_encoding($decoded_url, ‘UTF-8’, ‘auto’);Не помогло
Чтобы это работало, входящая строка должна содержать специальную метку(BOM) кодировки. В однобайтных кодировках её нет, а в настройках PHP(mbstring.language) должен быть правильно указан язык распознавания.
Попробуйте задать кодировку явно.
Кроме того, похоже, что у вас входящая кодировка в UTF-8 без BOM, а внутренняя кодировка скрипта в cp1251.
Но я не уверен.
К сожалению не понимаю как это делать.
Другими словами, проблема не в urldecode(), а в отображении декодированного.
Строка в UTF-8, а страница выдается в cp1251
Либо воспользуйтесь, например iconv(), либо исправьте заголовок страницы в header()
меняй кодировку скрипта (файла) на UTF-8
нахрена ты костыли советуешь ?
Латиница в UTF-8 как-то по-другому выглядит?
Так чего ему там менять-то?
Спасибо! Заработало нормально, после того как весь PHP файл пересоздал в кодировке UTF-8
Чем пересоздавали?
Текстовым редактором Bred.
Хм, видимо, я чего-то недопонимаю в этом вопросе, возможно, предложенное мной решение и правда костыль.
Так, что если ваш редактор не задает заголовков, то решение предыдущего оратора верно, потому что правильно. Но мне всё еще сомнительно, потом разберусь.