|
MySQL.RU - Webboard
Вернуться
Клиент - utf8, БД - cp1251. Не все заносится (WIPS) 01/04/2009 - 19:15:06
From: WIPS - 01/04/2009 - 19:15:06
Subject:Клиент - utf8, БД - cp1251. Не все заносится
-----------------
Приложение работает с БД в кодировке utf8, хотя сама БД - cp1251. При выборке данных все отлично благодаря SET NAMES.
А вот при вставке не все так радужно. Русский, украинский и английский вставляются нормально, а вот казахский, румынский и пр. заменяют свои спец. символы на "?".
Не помогает даже такое:
UPDATE `t1` SET f1 = 'жұмыс басқарушысы' COLLATE utf8_unicode_ci WHERE id = '1';
Однако, если проальтерить поле:
ALTER TABLE `t1` CHANGE `f1` `f1` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
то все вставляется нормально, но при обратной конвертации:
ALTER TABLE `t1` CHANGE `f1` `f1` VARCHAR(50) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL;
все ранее вставленные данные "ломаются", т.е. на месте спец. символов снова появляются "?".
Хочу сразу заметить, что сама по себе конвертация полей не подходит, я привел это для более полного описания ситуации. Конвертация БД/полей/таблиц тоже не рассматривается т.к. с ней (БД) так же работают и другие программы-клиенты.
Не понятно почему с разными COLLATE'ами получаются разные результаты, ведь COLLATE, насколько мне не изменяет склероз, задает только "алгоритм" стравнения строк.
Если есть идеи по поводу того как заставить работать приложение с вышеперечисленными языками не меняя кодировки БД - милости прошу! Буду рад...
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
35280
|
|