Подтвердить что ты не робот

Разница между ANSI и Unicode драйверами MySQL

При выборе источника данных в ODBC (64-разрядная версия) в Windows я получаю два доступных варианта базы данных MySQL:

  • MySQL ODBC 5.3 драйвер ANSI
  • Драйвер Unicode MySQL ODBC 5.3

В чем разница между этими двумя?

4b9b3361

Ответ 1

Во-первых, я должен сказать, что я не использую MySQL, но я знаю о драйверах ODBC. В ODBC существуют различные API для unicode и ansi. API-интерфейсы ansi заканчиваются на A, а интерфейсы unicode заканчиваются на W (например, SQLPrepareA и SQLPrepareW). API-интерфейсы ansi принимают байты/октеты для символьных строк и, следовательно, могут обрабатывать только chrs 0-255. API-интерфейсы unicode принимают SQLWCHAR, которые являются 2-байтовыми кодированными кодами Unicode с кодировкой UCS-2 (новые версии MS SQL Server могут обрабатывать кодированные строки UTF16), и поэтому могут обрабатывать приблизительно первые 65000 кодовых точек в Юникоде.

Итак, если вам нужно хранить данные в Юникоде, у вас нет выбора, какой драйвер использовать.

Я бы не дал комментариям о скорости от Carnangel отключить вас, используя драйвер Unicode, и в любом случае его комментарии не содержат никаких фактов. Он может иметь в виду:

Если вы храните данные в формате unicode в MySQL, он будет кодироваться и передаваться по сети UTF-8 по сети UTF-8. На стороне клиента драйвер ODBC должен будет преобразовать кодированные данные UTF-8 в UCS-2, поскольку это то, что требуется ODBC. Очевидно, что применяется обратное.

Если вы пишете приложение ANSI ODBC (то есть приложение ansi ODBC apis) с драйвером ODBC для Unicode, тогда менеджеру ODBC-драйвера придется преобразовать UCS-2, драйвер вернется в 8 бит (lossy) и конвертирует 8-битные данные передаются в драйвер UCS-2. Так что не делайте этого.

В эти дни я был бы удивлен, если кто-то все еще использует драйверы ANSI ODBC.

Ответ 2

Как вы можете знать, Ansi и unicode применяются к типу символа данных. Вы можете выбрать тот или иной, это не вопрос процессора Вот разница между ними: - Юникод позволяет использовать все свойства символов, но уменьшает скорость обработки исходной скорости - Ansi, наоборот, менее характерный тип, но необработанная скорость скорости ускоряется.

Если вы новый пользователь, возьмите Unicode, если вы не можете выбрать Ansi.

Надеюсь, у вас есть смысл;)