ํНужно раскодировать и декодировать URL

Добрый день!

Как раскодировать и декодировать URL средствами PHP ? То есть перевести текст в 16-тиричную систему и наоборот.

Функции urldecode, urlencode работают некорректно.

Этот код :

Код (Text):
  1. $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″;
  2.  
  3. $decoded_url = urldecode($encoded_url);
  4.  
  5.    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()

 

https://onlinephp.io/c/c8a16

меняй кодировку скрипта (файла) на UTF-8

нахрена ты костыли советуешь ?

 

Латиница в UTF-8 как-то по-другому выглядит?
Так чего ему там менять-то?

 

Спасибо! Заработало нормально, после того как весь PHP файл пересоздал в кодировке UTF-8

 

Чем пересоздавали?

 

Текстовым редактором Bred.

 

Хм, видимо, я чего-то недопонимаю в этом вопросе, возможно, предложенное мной решение и правда костыль.
Так, что если ваш редактор не задает заголовков, то решение предыдущего оратора верно, потому что правильно. Но мне всё еще сомнительно, потом разберусь.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *