Beschreibung der UTF-8-Daten in SQL Server speichern

Zusammenfassung

Einige Programme (insbesondere die webbasierte) müssen Unicode-Daten behandelt, die mit der Codierung UTF-8 codiert. SQL Server 7.0 und SQL Server 2000 verwenden Sie eine andere Codierung (UCS-2) Unicode und UTF-8 nicht als Daten erkannt. Dieser Artikel beschreibt einige Optionen für den Umgang mit dieser Situation.

Weitere Informationen

Unicode-Daten können auf viele verschiedene Arten codiert werden. UCS-2 und UTF-8 sind zwei gängige Methoden Bitmuster zu speichern, die Unicode-Zeichen. Microsoft Windows NT, SQL Server, Java, COM und der SQL Server-ODBC-Treiber und OLE DB-Provider stellen intern Unicodedaten UCS-2.

Optionen für die Verwendung von SQL Server 7.0 oder SQL Server 2000 als Back-End-Server für eine Anwendung, die als UTF-8 codiert Unicode-Daten sendet und empfängt:

  1. Wenn Ihre Active Server Pages (ASP Anwendung) und Internet Information Server (IIS) 5.0 und Microsoft Windows 2000 verwenden, können Sie "< % Session.Codepage=65001 % >" serverseitige ASP-Skript hinzufügen. Dies weist IIS alle dynamisch generierte Zeichenfolgen konvertieren (Beispiel: Response.Write) von UCS-2 in UTF-8 automatisch vor dem Senden an den Client.

    Wenn Sie keine Sitzung aktivieren möchten, Sie können serverseitige Richtlinie "< % @ CodePage 65001 % >".

    UTF-8-Daten vom Client an den Server über GET oder POST gesendet werden UCS-2 auch automatisch konvertiert. Die Session.Codepage-Eigenschaft empfiehlt sich UTF-8-Daten in eine Anwendung. Diese Codepage-Einstellung ist nicht verfügbar in IIS 4.0 und Windows NT 4.0. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
    254313 -Fehlermeldung: Active Server Pages Fehler ' ASP 0203' Ungültiger Code
  2. Übersetzen von UCS-2 oder UTF-8 als innerhalb der Anwendung. Beispielcode für diese Art der Konvertierung befindet sich auf der Unicode Consortium-Website:

    Eine allgemeine Beschreibung des Algorithmus UCS-2 in UTF-8 konvertieren kann im Internet Request For Comments-Dokument RFC2279 gefunden.

    Unter Windows NT oder Windows 2000 können Sie die Win32-Funktion MultiByteToWideChar und WideCharToMultiByte UTF-8 und UCS-2 konvertieren, übergeben Sie die Konstante CP_UTF8 (65001) als ersten Parameter an die Funktionen.
  3. Ändern der Anwendung UCS-2 anstelle von UTF-8-Codierung verwendet.
  4. Speichern Sie die tatsächlichen UTF-8-Daten auf dem Server mit den Spalten BINARY, VARBINARY/BILD. Speichern von UTF-8-Daten in SQL Server bedeutet, dass Sie nicht SQL Server sortieren oder diese Wertebereiche als wären die Daten Daten suchen. Auf Spalten mit UTF-8-Daten, die nicht die erwarteten Ergebnisse zurück würde gehören "ORDER BY", größer-als ">" und kleiner-als "<" Vergleiche und die integrierten SQL Server-Bearbeitung Zeichenfolgenfunktionen wie SUBSTRING().

    Gleichheitsvergleiche, funktioniert jedoch wie verglichenen Zeichenfolgen auf Byte-Ebene entsprechen. Beachten Sie, dass wenn Sie UTF-8-Daten in SQL Server nicht Zeichenspalten (CHAR, NCHAR/VARCHAR usw.) verwenden soll. UTF-8 ist nicht Daten, SQL Server und nicht druckbare Zeichen in Zeichenspalten Risiko Probleme wie in den folgenden Microsoft Knowledge Base-Artikeln behandelten Themen gespeichert:
    155723 -INF: SQL Server Abschneiden eine DBCS-Zeichenfolge
    234748 PRB: SQL Server-ODBC-Treiber Sprachereignisse in Unicode konvertiert
    Wenn diese Option in Betracht ziehen, wenn Sie UTF-8-Daten in SQL Server aus jeder Anwendung einen Webbrowser (z. B. von einer Web-basierten ODBC-Anwendung) zugreifen müssen müssen Sie die Konvertierung beibehalten von UTF-8 UCS-2 innerhalb dieser Anwendung als ODBC, OLEDB-COM, Win32-API-Aufrufe, VB und C# Runtime String Manipulation Funktionen funktionieren nicht mit UTF-8. Die Last der Übersetzung verschoben in eine andere Anwendung.
  5. Wenn Ihre Bedürfnisse nicht verwenden müssen zum Speichern von Daten aus einer Kombination von Sprachen, die eine einzelne Codepage erfüllt werden kann, müssen Sie nicht Unicode verwenden.
Unicode-Unterstützung wurde auf SQL Server mit SQL Server 7.0 eingeführt. Da SQL Server 6.5 nicht unterstützt Unicode-Daten speichern, werden nur die Optionen für SQL Server 6.5 in Schritt 4 und Schritt 5 beschrieben.
Eigenschaften

Artikelnummer: 232580 – Letzte Überarbeitung: 08.01.2017 – Revision: 1

Feedback