Мы только что обновили наш сервер MySQL с 5.0 до 5.1.Delphi, dbExpress и UTF8
Остальная задача - окончательно разобраться с нашей поддержкой Unicode, которая беспокоит нас с Delphi 2010. Теперь мы используем XE5.
Новая база данных была настроена со значением по умолчанию как utf8-general-ci. Таблицы были перенесены с их исходной сортировкой как latin1-swedish-ci.
На данный момент все наши приложения считаются с TSQLConnection.ServerCharSet = ""
, так как установка считываемых соединений на utf8 имеет неожиданные результаты.
Пишет с соединениями, установленными в TSQLConnection.ServerCharSet = "utf8"
я теперь сделал локальную копию новой схемы и превратил все таблицы в генерал-utf8-CI - и это похоже, прошел гладко.
Однако, когда я проверить на новом сервере он до сих пор не является гладким:
- Настройка подключения для чтения к utf8 обеспечивает результаты в той или иной форме кандзи.
- Установка считываемого соединения на utf8-general-ci или "" читается правильно.
- Установка соединения записи в «» приводит мусор при написании «Е» или «€» символы
- Настройка соединения записи в utf8 правильно пишет
Я подозреваю, что utf8 -general-ci не распознается как опция dbExpress, поэтому игнорируется
Я также подозреваю, что параметр SQLConnection.Locale может быть проблемой - в настоящее время это установлено на 0000, но у меня есть попытался установить его на LOCALE_SYSTEM_DEFAULT (2048) без успеха ...
Есть ли способ избежать двух разных TSQLConnections для процедур чтения/записи?
редактировать
На основе предложений по Ариоху «The Я побежал тест с различными типами строк столбцов. Мы используем поля Text/Tinytext, и именно там мы видим проблемы.
Проблема возникает при использовании типов столбцов VarChar. не.
Мы хотели бы предположение, что не требует от нас использования третьей стороны водителя/соединения, как этот шаг не соответствует нашей нынешней стратегии развития
вы пытались MySQL DBX водителей от других производителей? –
Нет - на данный момент предоставлен только Embarcadero. –
Попробуйте их, даже если только для двоичного поиска ошибок «делить и побеждать» –