Mysql. Кодировка cp2151. Проблемы с Update

Pusichka

Новичок
Mysql. Кодировка cp2151. Проблемы с Update

Всем доброго времени суток!
Не люблю постить вопросы на форумах и зачастую пытаюсь разобраться сам, но с этой проблемой справиться сам не могу и опустил руки. Вообщем ситуация такая.
Есть таблица. В ней 9 полей.
При создании таблицы использую cp1251
Вначале всех скриптов, работающих с таблицами, прописываю mysql_query('SET NAMES cp1251');
Если забивать данные INSERT'ом, то все нормально. Если UPDATE'ом, то проблемка.
Вот, в чем проблема.
Если, когда я данные получаю, то в <input type = text> данные выводятся в "понятном виде",
то когда я нажимаю кнопку сохранить, они отправляются в виде ужасном; пример:
В таблице в одном из полей хранится значение: "Меньше 18". Далее это значение адекватно
вставляется в editbox. Я, к примеру, добавляю 1 букву, нажимаю сохранить и в таблицу отправляется
"МеньС?Рµ 18". Ума уже не приложу что делать...
Да, кстати, при подключении к БД еще дополнительно прописываю
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_connection='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set character_set_database='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
Действительно очень рассчитываю на помощь, потому что уже не знаю что делать...

-~{}~ 03.04.09 19:24:

Ах, да.
Вот, что он пишет, когда я пытаюсь сделать дамп таблицы:
.......
INSERT INTO `100000001` (`q_number`, `q_value`, `q_type`, `q_group`, `q_key`, `q_12_var`, `q_pict`, `q_45_vert`, `q_45_hor`) VALUES
(1, 0xd0a1d0bad0bed0bbd18cd0bad0be20d092d0b0d0bc20d0bbd0b5d1823f, '1', 1, 0x31, 0xd0a0d19ad0a0c2b5d0a0d085d0a1d08ad0a13fd0a0c2b52031385f31382d32325f32332d32355f32362d32385fd0a0e28098d0a0d195d0a0c2bbd0a1d08ad0a13fd0a0c2b5203238, NULL, NULL, NULL);
.......
Хотя должно по идее вместо "0xd0a1d0bad0bed0bbd18cd0bad0be20d092d0b0d0bc20d0bbd0b5d1823f" быть написано "Сколько Вам лет?"
 

DiMA

php.spb.ru
Команда форума
Первая часть проблемы с базой не связано. Настрой пхп.ини, чтобы Апач выдавал заголовок content-type text/html; charset=windows-1251

Второе - смени тип поля. Смени того, кто делает дамп. Хотя, дамп абсолютно нормальный (но в кодировке UTF-8).

И настрой конфиг базы, чтобы каждый раз лишниее mysql_query('SET NAMES cp1251'); не писать.
 

vovanium

Новичок
чтобы каждый раз лишниее mysql_query('SET NAMES cp1251'); не писать.
Ага, а потом бежать на форум с вопросом, почему на локалке работает, а при переносе на хостинг нет :)
 

DiMA

php.spb.ru
Команда форума
ютишься на хостинге, своих серваков нет? :)
 

Pusichka

Новичок
Автор оригинала: DiMA
Первая часть проблемы с базой не связано. Настрой пхп.ини, чтобы Апач выдавал заголовок content-type text/html; charset=windows-1251

Второе - смени тип поля. Смени того, кто делает дамп. Хотя, дамп абсолютно нормальный (но в кодировке UTF-8).

И настрой конфиг базы, чтобы каждый раз лишниее mysql_query('SET NAMES cp1251'); не писать.
Спасибо за информацию. Но, я же не могу настроить php.ini если мне дали сервер без доступа к нему... или я не прав?
А тип поля у меня longtext... Не знаю. на что его менять... =)
 

vovanium

Новичок
как выглядит структура таблицы? выполни в phpmyadmin
[sql]SHOW CREATE TABLE `100000001`[/sql]
 

Фанат

oncle terrible
Команда форума
Если, когда я данные получаю, то в <input type = text> данные выводятся в "понятном виде",
то когда я нажимаю кнопку сохранить, они отправляются в виде ужасном;
браузер отправляет данные в той кодировке, в которой получает.
поэтому выдавая страницу браузеру, надо указывать ее кодировку, причем убедиться, что браузер ее понял

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

DiMA

php.spb.ru
Команда форума
> Спасибо за информацию. Но, я же не могу настроить php.ini если мне дали сервер без доступа к нему... или я не прав?

Менять файл не можешь. А добавь в код
header("Content-type: text/html; charset=windows-1251",1);
не обломится.
 

Pusichka

Новичок
Автор оригинала: DiMA
> Спасибо за информацию. Но, я же не могу настроить php.ini если мне дали сервер без доступа к нему... или я не прав?

Менять файл не можешь. А добавь в код
header("Content-type: text/html; charset=windows-1251",1);
не обломится.
Это у меня прописано. Только вот зачем 1 в конце?

-~{}~ 05.04.09 10:46:

Автор оригинала: vovanium
как выглядит структура таблицы? выполни в phpmyadmin
[sql]SHOW CREATE TABLE `100000001`[/sql]
CREATE TABLE `100000001` (\n `q_number` smallint(6) NOT NULL default '0',\n `q_value` text collate cp1251_bin NOT NULL,\n `q_type` enum('1','2','3','4','5') collate cp1251_bin NOT NULL default '1',\n `q_group` smallint(6) NOT NULL default '1',\n `q_key` text collate cp1251_bin,\n `q_12_var` longtext collate cp1251_bin,\n `q_pict` varchar(50) collate cp1251_bin default NULL,\n `q_45_vert` longtext collate cp1251_bin,\n `q_45_hor` longtext collate cp1251_bin\n) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin

-~{}~ 05.04.09 10:47:

Автор оригинала: *****
браузер отправляет данные в той кодировке, в которой получает.
поэтому выдавая страницу браузеру, надо указывать ее кодировку, причем убедиться, что браузер ее понял

ну, и разумеется, не надо, принимая данные, их перекодировать. а то таки любителей тут тоже много бегает. ой, у меня данные в виде ужасном. ой, это у меня строчка была, не знаю, откуда взялась
Ну перекодировка принятых данных мне в голову не приходила вообще =)))
 

Фанат

oncle terrible
Команда форума
повторяю. она никому не приходит. только потом спохватываемся "ой оно у меня здесь стояло".

Ты разобрался? В какой кодировке у тебя данные уходят, а в какой приходят? Без всякой базы данных, на уровне HTML?
В запросе данные выглядят нормально?
 

Pusichka

Новичок
Автор оригинала: *****
повторяю. она никому не приходит. только потом спохватываемся "ой оно у меня здесь стояло".

Ты разобрался? В какой кодировке у тебя данные уходят, а в какой приходят? Без всякой базы данных, на уровне HTML?
В запросе данные выглядят нормально?
Нет, не разобрался. Давай на примере =))))
Вот - ссылка на саму страницу http://stas.fmclub.spb.ru/q_ce.php
Далее, я сделал копии нужных пхп файлов и переименовал расширение на txt.
http://stas.fmclub.spb.ru/php/analyze_q_ce.txt - это пхп скрипт анализирует информацию,
которую получает из верхнего едит бокса страницы(с номером опроса. Сейчас есть только 1 опрос - 100000001 с одним вопросом.
Вот, попробуй поредактировать сами варианты ответов...
Когда нажмешь сохранить изменения, запустится скрипт
http://stas.fmclub.spb.ru/php/upload_q_ce.txt.
Тоесть, на странице ничего не изменится и чтобы увидеть что там произошло тебе надо заново нажать на "редактировать" в
правой части страницы.
Конечно, если тебе не сложно, *****. Буду признателен =)
 

Фанат

oncle terrible
Команда форума
ладно, убогий. все равно не поймешь.
аякс тебе посылает данные в utf-8
поэтому надо писать при их добавлении SET NAMES utf-8
свободен
 

Pusichka

Новичок
Автор оригинала: *****
ладно, убогий. все равно не поймешь.
аякс тебе посылает данные в utf-8
поэтому надо писать при их добавлении SET NAMES utf-8
свободен
Спасибо большое =)
Сейчас попробую =)))
 

findnext

Новичок
этот вопрос раз в 2 дня обсуждается, неужели в поиске нет ничего :)
 
Сверху