Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
35280



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |