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

Traduzione articoli Traduzione articoli
Identificativo articolo: 232580 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

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:

    FTP://FTP.Unicode.org/Public/Programs/CVTUTF/
    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.

Proprietà

Identificativo articolo: 232580 - Ultima modifica: lunedì 1 luglio 2013 - Revisione: 5.0
Le informazioni in questo articolo si applicano a:
  • 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
Chiavi: 
kbinfo kbmt KB232580 KbMtit
Traduzione automatica articoli
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
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com