Ukládání dat UTF-8 na serveru SQL Server popis

Souhrn

Některé aplikace (zejména těch, které jsou webové) musí čelit data ve formátu Unicode, který je kódován pomocí metody kódování UTF-8. SQL Server 7.0 a SQL Server 2000 pomocí různých kódování Unicode (UCS-2) a UTF-8 nelze rozpoznat jako platný znak data. Tento článek popisuje některé možnosti pro řešení této situace.

Další informace

Data ve formátu Unicode, mohou být kódovány v mnoha různými způsoby. UCS-2 a UTF-8 jsou dva běžné způsoby ukládání bit vzorky, které představují znaky Unicode. Microsoft Windows NT, SQL Server, Java, COM a ovladač SQL Server ODBC a OLEDB provider všechny interně představují data v kódování Unicode jako UCS-2.

Možnosti použití serveru SQL Server 7.0 nebo SQL Server 2000 jako server back-end pro aplikace, která odesílá a přijímá data ve formátu Unicode, který je kódovaný jako UTF-8:

  1. Pokud vaše aplikace používá stránky ASP (Active Server) a používáte Internet Information Server (IIS) 5.0 a Microsoft Windows 2000, můžete přiřadit skript ASP na straně serveru "< % Session.Codepage=65001 % >". Toto poskytne pokyn IIS převést všechny dynamicky generovaných řetězce (Příklad: Response.Write) z UCS-2, UTF-8 automaticky před jejich odesláním klientovi.

    Pokud nechcete povolit relací, můžete také použít serverový směrnice "< % @ CodePage = 65001 % >".

    Data odesílaná z klienta na server pomocí GET nebo POST UTF-8 je převeden do UCS-2 automaticky. Vlastnost Session.Codepage je doporučené metody pro zpracování dat UTF-8 v rámci webové aplikace. Toto nastavení znaková stránka není k dispozici na serveru IIS 4.0 a Windows NT 4.0. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
    254313 chybová zpráva: Active Server Pages chyba "ASP 0203' neplatný kód
  2. Přeložte z UCS-2 nebo UTF-8 a podle potřeby v rámci aplikace. Ukázkový kód pro tento typ převodu je umístěn na serveru Unicode Consortium:

    Stručný popis algoritmu převést UCS-2 do UTF-8 naleznete v dokumentu RFC2279 Internet Request For Comments.

    V systému Windows NT nebo Windows 2000, můžete použít funkce Win32 MultiByteToWideChar a WideCharToMultiByte převést z UCS-2 a UTF-8 předáním konstantní CP_UTF8 (65001) jako první parametr funkce.
  3. Upravte aplikaci namísto UTF-8 kódování UCS-2.
  4. Uložení skutečná data UTF-8 na server pomocí sloupce BINARY, VARBINARY nebo OBRÁZEK. Ukládání dat UTF-8 na serveru SQL Server znamená, že nelze použít SQL Server řazení nebo najít oblastí těchto hodnot, jako by data byla neplatná znaková data. Typy operací na sloupce obsahující data UTF-8, který by vrátit očekávané výsledky zahrnují "ORDER", větší-než ">" a méně-než "<" porovnání a vestavěné funkce manipulace řetězec SQL Server jako SUBSTRING().

    Porovnání rovnosti, však budou fungovat, pokud jsou porovnávané řetězce ekvivalentní úrovni bajt. Poznámka: Pokud ukládání dat UTF-8 na serveru SQL Server byste neměli používat sloupce znak (CHAR, NCHAR nebo VARCHAR a tak dále). UTF-8 není platný znak dat do serveru SQL Server a ukládáním dat bez znaků znakových sloupců rizika výskytu problémů, jako jsou problémy popsané v následujících článcích znalostní báze Microsoft Knowledge Base:
    155723 INF: SQL Server zkrácení řetězce DBCS
    234748 PRB: Ovladač SQL Server ODBC Driver převede události jazyka kódování Unicode
    Pokud uvažujete o této možnosti, mějte na paměti, pokud budete muset získat přístup k datům UTF-8 uložené uvnitř SQL Server v jiné aplikaci než ve webovém prohlížeči (například z non-Web-based aplikace ODBC) bude nutné provést převod z UTF-8 a UCS-2 v rámci této aplikace jako ODBC, OLEDB, COM, volání rozhraní API systému Win32, VB a C runtime řetězec manipulace funkce nefungují s daty UTF-8. Zatížení překladu se přesune do jiné aplikace.
  5. Pokud vaše požadavky neobsahují potřebu ukládat data z kombinace jazyků, které nelze splnit pomocí jediné kódové stránky, není třeba používat kódování Unicode.
Na serveru SQL Server SQL Server 7.0 počínaje byla zavedena podpora kódování Unicode. Protože SQL Server verze 6.5 nepodporuje ukládání dat ve formátu Unicode, pouze možnosti pro SQL Server verze 6.5 jsou uvedeny v kroku 4 a krok 5.
Vlastnosti

ID článku: 232580 - Poslední kontrola: 8. 1. 2017 - Revize: 1

Váš názor