parserALT
Страницы форума: ← Назад | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 600 | Дальше →

Кодировка в MySQL в случае INSERT и UPDATE

#1VRuzin
08.10.11 23:52
www.parser.ru → | ответить → | в избранное →

Кодировка в MySQL в случае INSERT и UPDATE

Перенес сайты на другой сервер. Кодировка БД в случае INSERT и UPDATE поменялась.

MySQL
Файлы в windows-1251. БД в 1251.
В строке подключения к БД ?charset=cp1251
при просмотре сайта все отлично.

В базу добавляются записи, где видны одни "??????????".
Не пойму почему работает не правильно.
#2Misha v.3
→ VRuzin [#1] | 09.10.11 04:13
www.parser.ru → | ответить → | в избранное →

Кодировка БД в случае INSERT и UPDATE поменялась.


это как? что-то я не помню, чтобы у MySQL была возможность задать кодировку отдельно для INSERT/UPDATE.

расскажите, что конкретно у вас в настройках кодировок mysql (выполните команду "SHOW VARIABLES WHERE Variable_name LIKE "c%"", подключившись клиентом, который не делает никаких "SET CHARACTER SET xyz" & Co). кстати, можете попробовать начать диагностику с _test.html).
также не забудьте добавить, какая кодировка у вас задана для таблиц (например выполнив команду "SHOW CREATE TABLE таблица"). полагаю, что именно в этом проблема.


Файлы в windows-1251. БД в 1251.
В строке подключения к БД ?charset=cp1251

вы забыли рассказать, что у вас в $request:charset. полагаю, что "windows-1251", но будет лучше, если вы это перепроверите.

кроме того, вы забыли сообщить, попробовали-ли ли вы локализовать проблему, сделав простенький тестовый, который и содержит в себе определение строки соединения и делает update с select и выводит данные.
также будет здорово, если этот скрипт сначала будет создавать тестовую таблицу.
#3VRuzin
→ Misha v.3 [#2] | 09.10.11 09:35
www.parser.ru → | ответить → | в избранное →
$request:charset - да windows-1251/
_test.html - пробовал. Вот что пишет
SQL преобразование строки с русским алфавитом к верхнему регистру:
Преобразование было произведено не корректно. 
Результат: '?????????????????????????????????' (должно быть: 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ').

Проверка значений переменных SQL сервера CHARACTER_SET/CHARACTER_SET_CLIENT:
Значение переменой CHARACTER_SET_CLIENT совпадает со значением $request:charset, следовательно в настоящий момент кодировки настроены верно.

Вот что дает SHOW VARIABLES WHERE Variable_name LIKE "c%"
Variable_name	Value
character_set_client	cp1251
character_set_connection	latin1
character_set_database	latin1
character_set_filesystem	binary
character_set_results	cp1251
character_set_server	cp1251
character_set_system	utf8
character_sets_dir	/usr/share/mysql/charsets/
collation_connection	latin1_swedish_ci
collation_database	latin1_swedish_ci
collation_server	cp1251_general_ci
completion_type	0
concurrent_insert	1
connect_timeout	10

Вот что SHOW CREATE TABLE таблица
CREATE TABLE `news` (
	`id` int(11) NOT NULL AUTO_INCREMENT,
	`name` varchar(255) NOT NULL DEFAULT '',
	`descr` text NOT NULL, `news` text NOT NULL,
	PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=33555374 DEFAULT CHARSET=cp1251
#4VRuzin
→ VRuzin [#3] | 09.10.11 09:55
www.parser.ru → | ответить → | в избранное →
Спасибо. Очень помогло!!!
Пересоздал БД как utf8_general_ci
Поменял в MySQL Кодировку по умолчанию на UTF8.
Все стало нормально работать.

Премного благодарен!
Страницы форума: ← Назад | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 600 | Дальше →