MySQL latin1 турецкие данные и delphi 2010 utf8

У меня есть таблицы, сравнивающие latin1_general_ci и имеющие турецкие значения символов. И я могу без проблем использовать эти данные на delphi 7 + zeos. но я хочу обновить свой delphi до версии 2010, но zeos слишком медленный, как я видел. поэтому я хочу использовать решение odbc + ado или dbexpress.

Решение dbexpress работает нормально, отображать мои данные как введенные и записывать как введенную таблицу без каких-либо изменений в кодировке столбца. но у dbexpress, как я видел, есть проблемы. например, когда я выбираю * из таблицы, в которой есть типы столбцов, такие как varchar, decimal, int, tinyint, text выдает ошибки AV в системах xp. vista и 7 не выдают ошибок и работают нормально (полностью не тестировал).

в системах xp трассировка нарушения доступа - это трассировка отладки нарушения прав доступа.

| 7C9010E0 | ntdll.dll | | | RtlLeaveCriticalSection | |

| 7E419239 | USER32.dll | | | CharUpperBuffW | |

| 7E419216 | USER32.dll | | | CharUpperBuffW | |

| 7C80CED0 | kernel32.dll | | | LCMapStringW | |

| 7C910380 | ntdll.dll | | | RtlImageNtHeader | |

| 7C903247 | ntdll.dll | | | RtlConvertUlongToLargeInteger | |

| 7C90E485 | ntdll.dll | | | KiUserApcDispatcher | |

| 009A631E | Project1.exe | Unit1.pas | TForm1 | Button1Click | 110 [37] |

Решение ado (dbgo) работает нормально, но мои данные не отображаются как введенные. он хочет, чтобы все было в формате utf. но я не хочу преобразовывать свои данные в UTF, прежде чем все протестировать. как я могу увидеть свои данные как введенные и записать клиентский utf и сохранить latin1 (как это делают zeos или dbexpress).

я перепробовал много других вариантов. например. Параметры сортировки и кодировки на стороне mysql.

Извините за мой плохой английский. надеюсь, кто-нибудь меня поймет.

благодаря.


person sabri.arslan    schedule 24.04.2010    source источник
comment
Я не понимаю вашей ситуации, но пробовали ли вы установить набор символов соединения с помощью SET NAMES? Кроме того, вы должны описать получаемые сообщения об ошибках.   -  person Pekka    schedule 24.04.2010
comment
да пробовал. но мои данные в формате latin1. и включает турецкие символы. без преобразования имен наборов не работает полностью. если вы используете заданные имена, вы не сможете искать турецкие символы. в utf можно сделать. но без полного теста я не хочу конвертировать свои данные в utf   -  person sabri.arslan    schedule 24.04.2010
comment
в решении dbexpress я получаю нарушение доступа. Я пробовал сделать ошибку трассировки. это потому, что ошибка преобразования числа. У меня есть столбцы, такие как десятичный (20,8), двойной беззнаковый. а мои столбцы первичного ключа - это двойное беззнаковое, не нулевое значение auto_increment.i отправит трассировку отладки в моей системе XP.   -  person sabri.arslan    schedule 24.04.2010
comment
Ах, значит, вам тоже нужно записывать данные. Ну, самый простой способ решить проблему с символом - это перенести таблицы в UTF-8, не так ли? Разве это невозможно? Что касается второй проблемы, я не знаю, она, похоже, связана с преобразованием чисел. Я помню такие проблемы в соединителях базы данных Delphi, но последней версией, с которой я работал, была Delphi 5 :)   -  person Pekka    schedule 24.04.2010
comment
Да, ты прав. также разъемы так сложно. также odbc обрабатывает мой первичный ключ как where id = 1.00000. это будет проблемой в будущем. в любом случае я надеюсь, что мне придется преобразовать все мои данные в utf-8 с чтением latin1 и utf8decode и снова записать таблицу utf8. как я понимаю, изменение таблицы не решит мою проблему. благодаря.   -  person sabri.arslan    schedule 24.04.2010


Ответы (1)


Я предлагаю перейти на сторонние решения, такие как AnyDAC. AnyDAC поддерживает следующие функции MySQL:

  • Обычные и встроенные серверы.
  • SSL-соединения.
  • Типы данных ENUM, SET и т. Д.
  • Кодировки символов UTF8 и т. Д.
  • Столбцы AUTO_INCREMENT.
  • MySQL 5 хранимых процедур.
  • Пакетные команды с несколькими наборами результатов.
  • Выполнение запроса прерывается.
  • Массив DML.
person da-soft    schedule 25.04.2010
comment
Я попробовал пробную версию anydac. с помощью anydac soluiton мне нужно преобразовать все свои данные в utf перед использованием. как я вижу, это очень быстро. но я предпочитаю соултион с открытым исходным кодом. теперь я использую delphi 7 + zeos + mysql, кроме delphi с открытым исходным кодом. еще раз спасибо - person sabri.arslan; 25.04.2010