Передать GET параметры на русском языке

D3
На сайте с 12.11.2011
Offline
51
3529

Столкнулся с проблемой, и не знаю, как разрешить.

PHP скрипт получает get-параметр от браузера на русском языке в виде:

&color=%D7%E5%F0%ED%FB%E9 (изначально &color=Черный)

В дальнейшем по этому параметру будет вестись сортировка в SQL базе. Но при попытке запроса с этим параметром, полученным через $_GET['color'], выдается ошибка "Unknown column 'Черный' in 'where clause'".

CMS работает в кодировке "Windows-1251".

Кто-нибудь знает, как можно решить проблему?

Красивое женское нижнее белье. http://designer-lingerie.ru/ (http://designer-lingerie.ru/)
LEOnidUKG
На сайте с 25.11.2006
Offline
1769
#1

rawurldecode($_GET['color'])

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
SeVlad
На сайте с 03.11.2008
Offline
1609
#2
dr303:
Кто-нибудь знает, как можно решить проблему?

переписать скрипт для использования стандартов (преобразовать в транслит например). А то ведь не известно сколько ещё костылей придётся подставлять и как они подружатся.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
[Удален]
#3

urldecode php

siv1987
На сайте с 02.04.2009
Offline
427
#4

&color=%F7%E5%F0%ED%FB%E9

у вас utf-8

KS
На сайте с 11.06.2012
Offline
17
#5

Убедитесь, что страницы сайта в браузере действительно имеют кодировку Windows-1251. Проверьте, какую кодировку (чарсет) имеют поля базы данных. Важно, чтобы она была cp1251. Если всё так, то где-то в PHP, после создания соединения с базой данных, следует отправить запрос: "SET NAMES cp1251". Это обеспечит правильную кодировку соединения с базой данных. Такое бывает в случаях, когда база данных в русской кодировке используется на сервере, где установки по умолчанию не русские.

---------- Добавлено 08.07.2012 в 23:35 ----------

А лучше переходите на UTF-8. И подобных проблем не будет, и многих других.

FileSafe (http://filesafe.anek.ws/) - мониторинг неизменности файлов сайта для защиты от взлома. Для форумчан - первый год бесплатно.
богоносец
На сайте с 30.01.2007
Offline
772
#6

Что сделает браузер/бот, если ссылка /ru/forum/726269 будет стоять где-нибудь в www на странице с UTF-8 или Windows-1251 ?

/ru/forum/726269

/ru/forum/726269

Иногда создатели сайтов делают доступными обе страницы, получаются дубли. Правильнее было бы по одному из адресов ответить 301

Ragnarok
На сайте с 25.06.2010
Offline
239
#7

да сделайте передачу

&color=1
(2,3,etc)

а в коде

switch ($_GET["color"]) {
case 1: $color="черный"; break;
case 2: $color="синий"; break;
case 3: $color="серобуромалиновыйвкрапинку"; break;
default: $color="черный"; break;
}
//TODO: перестать откладывать на потом
LEOnidUKG
На сайте с 25.11.2006
Offline
1769
#8

Ragnarok или использовать латиницу.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий