lazarus + MySQL - вывод данных

Модератор: Модераторы

Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

masters писал(а):а то делаю поле 20 символов, а туда всего 10 русских влазит

Это потому что Lazarus при любом раскладе работает с кодировкой UTF-8, а русские символы в UTF-8 имеют размер 2 байта. Следовательно все русские строки, которые Вы посылаете из программы написанной в Lazarus имеют размер тоже 2 байта.
Вам нужно задать кодировку, в которой MySQL будет принимать строковые данные от клиента и тогда MySQL будет их автоматически перекодировать в кодировку, которая задана при создании базы.
Я, сразу после подключения к БД, делаю так:

Код: Выделить всё

  ZConnection.ExecuteDirect('SET character_set_client = "UTF8"');
  ZConnection.ExecuteDirect('SET character_set_connection = "UTF8"');
  ZConnection.ExecuteDirect('SET character_set_results = "UTF8"');
  ZConnection.ExecuteDirect('SET collation_connection = "UTF8_bin"');

Т.е. устанавливаю значение стандартных переменных MySQL для текущего сеанса работы с БД в UTF-8.
masters
новенький
Сообщения: 20
Зарегистрирован: 19.08.2009 13:50:59

Сообщение masters »

Vadim писал(а):Вам нужно задать кодировку, в которой MySQL будет принимать строковые данные от клиента и тогда MySQL будет их автоматически перекодировать в кодировку, которая задана при создании базы.


А базу в какой кодировке создавать? cp1251_general_ci или UTF8 ?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

masters писал(а):А базу в какой кодировке создавать?

В какой хотите.
Ответить