Descrizione dell'archiviazione di dati UTF-8 in SQL Server

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 232580
Sommario
Alcune applicazioni, specialmente quelle che sono basate sul Web, è necessario gestire con i dati Unicode codificati con il metodo di codifica UTF-8. SQL Server 7.0 e SQL Server 2000 utilizza una diversa (UCS-2) codifica Unicode e UTF-8 non viene riconosciuto come dati carattere valido. In questo articolo vengono illustrate alcune opzioni per gestire questa situazione.
Informazioni
I dati Unicode possono essere codificati in modi diversi. UCS-2 e UTF-8 sono due metodi comuni per memorizzare i modelli di bit che rappresentano i caratteri Unicode. Microsoft Windows NT, SQL Server, Java, COM e il driver ODBC di SQL Server e provider OLE DB per tutti i rappresentare internamente i dati Unicode UCS-2.

Le opzioni per l'utilizzo di SQL Server 7.0 o SQL Server 2000 come server back-end per un'applicazione che invia e riceve i dati Unicode vengono codificati come UTF-8 includono:
  1. Se l'applicazione utilizza pagine ASP (ASP) e si utilizza Internet Information Server (IIS) 5.0 e Microsoft Windows 2000, è possibile aggiungere "< % Session.Codepage=65001% >" allo script ASP sul lato server. Ciò indica a IIS di convertire tutte le stringhe generate dinamicamente (esempio: Response. Write) da UCS-2 in UTF-8 automaticamente prima di inviarli al client.

    Se non si desidera attivare sessioni, in alternativa è possibile utilizzare la direttiva sul lato server "< % @ CodePage = 65001% >".

    Tutti i dati UTF-8 inviati dal client al server tramite GET o POST inoltre viene convertiti automaticamente in UCS-2. La proprietà Session codepage è il metodo consigliato per gestire i dati UTF-8 all'interno di un'applicazione web. Questa impostazione per la tabella codici non è disponibile in IIS 4.0 e Windows NT 4.0. Per ulteriori informazioni, vedere il seguente articolo della Microsoft Knowledge Base:
    254313 Messaggio di errore: Errore di pagine ASP ' ASP 0203 "codice non valido
  2. Traduzione da e verso UCS-2 o UTF-8 come appropriato all'interno dell'applicazione. Codice di esempio per questo tipo di conversione si trova nel sito del consorzio Unicode:

    Una descrizione generale dell'algoritmo per convertire UCS-2 in UTF-8 sono reperibili nel documento Request For Comments Internet RFC2279.

    In Windows NT o Windows 2000, è possibile utilizzare le funzioni Win32 MultiByteToWideChar e WideCharToMultiByte Per convertire UTF-8 in e da UCS-2 passando la costante CP_UTF8 (65001) come primo parametro alle funzioni.
  3. Modificare l'applicazione di utilizzare UCS-2 invece di codifica UTF-8.
  4. Memorizzare i dati UTF-8 sul server utilizzando le colonne VARBINARY/binario/immagine. Archiviazione di dati UTF-8 in SQL Server significa che non è possibile utilizzare SQL Server per ordinare o trovare intervalli di questi valori come se fossero i dati carattere valido. I tipi di operazioni su colonne contenenti dati UTF-8 che non restituisce i risultati previsti sono "ORDER BY", maggiore-rispetto a ">" e minore-a "<" comparisons,="" and="" the="" built-in="" sql="" server="" string="" manipulation="" functions="" such="" as=""></">

    Tuttavia, i confronti di uguaglianza funzionerà come stringhe confrontate sono equivalenti a un livello di byte. Nota Se si archiviano i dati UTF-8 in SQL Server è necessario non utilizzare colonne di tipo carattere (NCHAR/CHAR/VARCHAR e così via). UTF-8 non dati carattere valido per SQL Server e l'archiviazione di dati di carattere diverso in colonne di caratteri che si corre il rischio che si verifichino problemi, ad esempio i problemi descritti nei seguenti articoli della Microsoft Knowledge Base:
    155723 INF: Troncamento di SQL Server di una stringa di caratteri DBCS
    234748 PRB: Driver ODBC di SQL Server converte gli eventi di lingua in Unicode
    Se si sta prendendo in considerazione questa opzione, tenere presente che se è necessario per accedere a UTF-8 dati archiviati all'interno di SQL Server da qualsiasi applicazione diversa da un browser Web (ad esempio, da un'applicazione ODBC non basata su Web) è sarà necessario eseguire una conversione da UTF-8 a UCS-2 all'interno di questa applicazione ODBC, OLEDB, COM, le chiamate API Win32, VB e C runtime stringa modifica funzioni non funzionano con i dati UTF-8. Consente di spostare il carico di lavoro di traduzione in un'altra applicazione.
  5. Se i requisiti non includono la necessità di archiviare i dati da una combinazione di linguaggi che non può essere soddisfatto da un'unica tabella codici, potrebbe non essere necessario utilizzare Unicode.
Supporto di Unicode è stato introdotto a partire da SQL Server 7.0 di SQL Server. Poiché SQL Server 6.5 non supporta l'archiviazione di dati Unicode, le uniche opzioni per SQL Server 6.5 sono illustrate nei passaggi 4 e 5.
UTF-16 UTF16 internazionale UTF8 UCS2

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 232580 - Ultima revisione: 07/01/2013 04:02:00 - Revisione: 5.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 6.5 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbinfo kbmt KB232580 KbMtit
Feedback