まず、MySQLは使用していませんが、ODBCドライバーについては知っています。 ODBCには、UnicodeとANSI用に異なるAPIがあります。 ansi APIはAで終わり、Unicode APIはWで終わります(SQLPrepareAやSQLPrepareWなど)。 ansi APIは、文字列のバイト/オクテットを受け入れるため、chrs 0〜255のみを処理できます。 Unicode APIは、2バイトのUCS-2エンコードされたUnicodeコードポイントであるSQLWCHARを受け入れます(新しいMS SQL ServerバージョンはUTF16エンコードされた文字列を処理できます)。したがって、Unicodeの最初の約65000コードポイントを処理できます。
したがって、Unicodeデータを保存する必要がある場合は、使用するドライバを選択できません。
Carnangelからの速度に関するコメントは、Unicodeドライバーの使用を延期させません。いずれにせよ、彼のコメントには事実が含まれていません。彼は次のことを言及している可能性があります:
MySQLにUnicodeデータを保存すると、UTF-8でエンコードされ、ネットワークを介してUTF-8として転送されます。クライアント側で、ODBCドライバーはUTF-8でエンコードされたデータをUCS-2に変換する必要があります。これはODBCが必要とするものだからです。明らかに逆が当てはまります。
ユニコードODBCドライバーを使用してANSIODBCアプリケーション(つまり、ansi ODBC apisを使用するアプリケーション)を作成する場合、ODBCドライバーマネージャーは、ドライバーが8ビット(損失)に戻すUCS-2を変換し、8ビットを変換する必要があります。ドライバーにUCS-2に渡すデータ。だからそうしないでください。
最近、誰かがまだANSIODBCドライバーを使用しているとしたら驚きます。