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.