Zunächst soll ich sagen, dass ich verwende MySQL nicht, aber ich weiß über ODBC-Treiber. In ODBC gibt es verschiedene APIs für Unicode und Ansi. Die APIs von ansi enden in A und die Unicode-APIs enden in W (z. B. SQLPrepareA und SQLPrepareW). Die ANSI-APIs akzeptieren Bytes/Oktetts für Zeichenketten und können daher nur die Chrs 0-255 verarbeiten. Die Unicode-APIs akzeptieren SQLWCHARs, die 2 Byte UCS-2-codierte Unicode-Codepunkte sind (neuere MS SQL Server-Versionen können UTF16-codierte Strings verarbeiten) und können daher ungefähr die ersten 65000 Codepunkte in Unicode verarbeiten.
Wenn Sie also Unicode-Daten speichern müssen, haben Sie keine Wahl, welchen Treiber Sie verwenden möchten.
Ich würde nicht lassen Sie die Kommentare zu Geschwindigkeit aus Carnangel Sie mit dem Unicode-Treiber abschrecken und auf jeden Fall seine Kommentare enthalten keine Fakten. Er bezieht sich möglicherweise auf:
Wenn Sie Unicode-Daten in MySQL speichern, wird es UTF-8 codiert und über Ihr Netzwerk als UTF-8 übertragen. Auf der Client-Seite muss der ODBC-Treiber die UTF-8-codierten Daten in UCS-2 konvertieren, da dies ODBC benötigt. Offensichtlich gilt das Gegenteil.
Wenn Sie eine ANSI-ODBC-Anwendung (die die ANSI-ODBC-API verwendet) mit einem Unicode-ODBC-Treiber schreiben, dann muss der ODBC-Treibermanager die UCS-2 konvertieren, der Treiber kehrt zu 8 Bit (verlustbehaftet) zurück wandeln Sie die 8-Bit-Daten, die Sie an den Treiber übergeben, in UCS-2 um. Also tu das nicht.
In diesen Tagen würde ich überrascht sein, wenn jemand noch ANSI ODBC-Treiber verwendet.
was ist rohe geschwindigkeitsbehandlung? –
Grundsätzlich ist es die Zeit, Daten zu lesen, und damit die Zeit der Daten erscheint. Angenommen, Sie zwei Projekte haben: Eines, in dem Sie bekam ve zwei Tabellen mit relativ wenigen Daten Die andere, in denen es 50 Tische und eine Menge Daten Wenn in beiden Fällen Sie „Wählen Sie * aus 'table' " -der erste wird die Daten wirklich schnell lesen (hohe Rohgeschwindigkeit) - Der zweite dauert eine längere Zeit, um die Tabellendaten zu lesen (weniger rohe Geschwindigkeit) – Carnangel