Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP + SACK + WINDOWS-1251 = Fu... Проблемы с кодировкой 
V
    Опции темы
Deg
Дата 1.3.2008, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.9.2006
Где: Dniepropetrovsk, Ukraine

Репутация: нет
Всего: нет



Тема стара как мир, но допустимого решения не нашел:

JS -> PHP -> Mysql -> PHP -> JS

отправляем русский текст c input'а в 1251 , сервер принимает пишет в базу, читает с базы 1251, посылает клиенту, скрипт тулит в div

Используется:
  • Кодировка сайта: windows-1251 (не предлагать перейти на UTF-8)
  • Кодировка базы: windows-1251 (не предлагать перейти на UTF-8)
  • AJAX модуль Simple Ajax Code Kit

Цель: Поиск по сайту, реализация с использованием явыскрипта. Нужно решение именно на этом CodeKit'е, так как он маленький.

p.s. с prototype.js такого не возникает, посылание обычного header("Content-type: text/html; charset=windows-1251") хватает, а с этим - фиг


PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 1.3.2008, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317





--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Deg
Дата 1.3.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.9.2006
Где: Dniepropetrovsk, Ukraine

Репутация: нет
Всего: нет



Цитата(Sardar @ 1.3.2008,  21:21)
encodeURIComponent -> rawurldecode?

С возвратом результата - все класс, спасибо. Но вот encodeURIComponent передала все нормально в кодах с %, вот только что с ними там делать? PHP-исходник в ANSI
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 1.3.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Deg @  1.3.2008,  21:07 Найти цитируемый пост)
Но вот encodeURIComponent передала все нормально в кодах с %, вот только что с ними там делать?

Глянь снова на функцию rawurldecode, попробуй почитать мануал.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Deg
Дата 1.3.2008, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.9.2006
Где: Dniepropetrovsk, Ukraine

Репутация: нет
Всего: нет



Цитата(Sardar @ 1.3.2008,  22:11)
Цитата(Deg @  1.3.2008,  21:07 Найти цитируемый пост)
Но вот encodeURIComponent передала все нормально в кодах с %, вот только что с ними там делать?

Глянь снова на функцию rawurldecode, попробуй почитать мануал.

Да вроде нормально читаю...

клиент кодирует строку руссо в %D1%80%D1%83%D1%81%D1%81%D0%BE

Код

encodeURIComponent('руссо');


Код

echo (" ".$_POST['key1']);


Но вот 
Код

echo rawurldecode($_POST['key1']);


превращает его в СЂСѓСЃСЃРѕ

Где я натупил?

Добавлено через 14 минут и 17 секунд
Тупка найдена, в начале обработчика на php убрал (как не странно) 
Код

header("Content-type: text/html; charset=windows-1251");
 и все запахало, благодарю Вас, Sardar, тему считаю закрытой smile 
PM MAIL WWW ICQ Skype   Вверх
Deg
Дата 1.3.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.9.2006
Где: Dniepropetrovsk, Ukraine

Репутация: нет
Всего: нет



Опять затупил...


Когда делаем вот так:
Код

echo urldecode($_POST['key1']);
echo (" руссо");

получаем: руссо ����, т.е. то что пришло с JS - декодилось, а то что echo ("руссо"); - бред!!!!

А когда делаем вот так:
Код

@header("Content-type: text/html; charset=WINDOWS-1251"); 
echo urldecode($_POST['key1']);
echo ("руссо");

Выдает вот такое: СЂСѓСЃСЃРѕ руссо

Как быть?
PM MAIL WWW ICQ Skype   Вверх
Deg
Дата 1.3.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.9.2006
Где: Dniepropetrovsk, Ukraine

Репутация: нет
Всего: нет



Нашел выход, да вот глупый до горя, так как думаю что изобрел велик явно не в первый раз, и есть выход с аналогичным результатом и не такой геморный:

Файл в ANSI и в него отправляю encodeURIComponent('руссо'), обрабатываю вот этимс:

Код

@header("Content-type: text/html; charset=WINDOWS-1251"); 
function decoder($str) {
$ansi = array('а','б','в','г','д','е','ё','ж','д','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я','А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я');
$ansi_1 = array('%E0','%E1','%E2','%E3','%E4','%E5','%B8','%E6','%E7','%E8','%E9','%EA','%EB','%EC','%ED','%EE','%EF','%F0','%F1','%F2','%F3','%F4','%F5','%F6','%F7','%F8','%F9','%FA','%FB','%FC','%FD','%FE','%FF','%C0','%C1','%C2','%C3','%C4','%C5','%A8','%C6','%C7','%C8','%C9','%CA','%CB','%CC','%CD','%CE','%CF','%D0','%D1','%D2','%D3','%D4','%D5','%D6','%D7','%D8','%D9','%DA','%DB','%DC','%DD','%DE','%DF');
$ansi_2 = array('%D0%B0','%D0%B1','%D0%B2','%D0%B3','%D0%B4','%D0%B5','%D1%91','%D0%B6','%D0%B7','%D0%B8','%D0%B9','%D0%BA','%D0%BB','%D0%BC','%D0%BD','%D0%BE','%D0%BF','%D1%80','%D1%81','%D1%82','%D1%83','%D1%84','%D1%85','%D1%86','%D1%87','%D1%88','%D1%89','%D1%8A','%D1%8B','%D1%8C','%D1%8D','%D1%8E','%D1%8F','%D0%90','%D0%91','%D0%92','%D0%93','%D0%94','%D0%95','%D0%81','%D0%96','%D0%97','%D0%98','%D0%99','%D0%9A','%D0%9B','%D0%9C','%D0%9D','%D0%9E','%D0%9F','%D0%A0','%D0%A1','%D0%A2','%D0%A3','%D0%A4','%D0%A5','%D0%A6','%D0%A7','%D0%A8','%D0%A9','%D0%AA','%D0%AB','%D0%AC','%D0%AD','%D0%AE','%D0%AF');
    if (!empty($str)) {
        if (substr($str,0,2) == "%D") return str_replace($ansi_2,$ansi,$str); else return str_replace($ansi_1,$ansi,$str);
    } else return '';
} 

echo ($_POST['key1'])."<BR />";
echo ("руссо")."<BR />";
echo decoder($_POST['key1'])."<BR />";


и вот результат:
Код

%D1%80%D1%83%D1%81%D1%81%D0%BE
руссо
руссо


Вот теперь Ваши коментарии по поводу моего корявого кода smile
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 2.3.2008, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Deg @  1.3.2008,  21:26 Найти цитируемый пост)
превращает его в СЂСѓСЃСЃРѕ

Какая кодировка удваивает кириллицу и в ANSI выглядит каракулями? UTF-8
echo iconv("UTF-8", "CP1251", urldecode($_POST['key1']));


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Deg
Дата 2.3.2008, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.9.2006
Где: Dniepropetrovsk, Ukraine

Репутация: нет
Всего: нет



Цитата(Sardar @  2.3.2008,  00:17 Найти цитируемый пост)
iconv("UTF-8", "CP1251", urldecode($_POST['key1'])); 


...и еще разок спасибо. Приятно иметь дело с профи  smile 

PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0865 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.