Alcune applicazioni (soprattutto quelle che sono basate sul Web) devono affrontare i dati Unicode codificato con il metodo di codifica UTF-8. SQL Server 7.0 e SQL Server 2000 è utilizzare una diversa codifica Unicode (UCS-2) e che non riconoscono l'UTF-8 come dati di carattere valido. Questo articolo vengono descritte alcune opzioni per affrontare questa situazione.
I dati Unicode possono essere codificati in molti modi diversi. UCS-2 e UTF-8 consente di sono due modi comuni per archiviare schemi di bit che rappresentano caratteri Unicode. Microsoft Windows NT, SQL Server, Java, COM e il driver ODBC di SQL Server e il provider OLE DB tutti internamente è possibile rappresentare i dati Unicode come UCS-2.
Le opzioni per l'utilizzo di SQL Server 7.0 o SQL Server 2000 come un server back-end per un'applicazione che invia e riceve i dati Unicode vengono codificati come UTF-8 includono:
- Se l'applicazione utilizza Active Server Pages (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. Questo indica che IIS per 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, è possibile utilizzare in alternativa la direttiva del lato server "< % @ CodePage = 65001 % >".
I dati UTF-8 inviati dal client al server tramite GET o POST inoltre vengono convertiti automaticamente UCS-2. La proprietà di Session.Codepage è il metodo consigliato per gestire i dati UTF-8 all'interno di un'applicazione web. Questa impostazione tabella codici non è disponibile in IIS 4.0 e Windows NT 4.0. Per ulteriori informazioni, vedere il seguente articolo della Microsoft Knowledge Base riportato di seguito: 254313
(http://support.microsoft.com/kb/254313/EN-US/
)
Messaggio di errore: Active Server Pages errore "ASP 0203" codice non valido
- Convertire da UCS-2 o UTF-8 ed esigenze all'interno dell'applicazione. Codice di esempio per questo tipo di conversione è disponibile sul 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 UTF-8 di convertire in e da UCS-2 passando la costante CP_UTF8 (65001) come primo parametro alle funzioni. - Modificare l'applicazione per utilizzare UCS-2 anziché la codifica UTF-8.
- Memorizzare i dati UTF-8 sul server utilizzando le colonne BINARY, VARBINARY o IMAGE. Memorizzazione di dati UTF-8 in SQL Server, significa che che è possibile non utilizzare SQL Server per ordinare o trovare intervalli di questi valori, come se i dati sono stati i dati carattere valido. I tipi di operazioni sulle colonne contenenti dati UTF-8 non restituirà i risultati previsti includono "ORDER BY", maggiore - a ">"e meno - a"<" confronti e le funzioni di Modifica stringa predefinite di SQL Server, ad esempio SUBSTRING().
Tuttavia, i confronti di uguaglianza, funzionerà, purché nelle stringhe confrontate sono equivalente a un livello di byte. Nota Se si archiviano dati UTF-8 in SQL Server si consiglia di non utilizzare colonne di caratteri (CHAR, NCHAR o VARCHAR e così via). UTF-8 non è in dati carattere valido per SQL Server e tramite la memorizzazione dati di tipo non di tipo carattere in colonne di caratteri che si rischia di problemi, ad esempio i problemi descritti nei seguenti articoli della Microsoft Knowledge Base: 155723
(http://support.microsoft.com/kb/155723/EN-US/
)
INF: Troncamento di server SQL di una stringa DBCS
234748
(http://support.microsoft.com/kb/234748/EN-US/
)
PRB: Driver ODBC di SQL Server converte eventi lingua in Unicode
Se si intende questa opzione, tenere presente che se è necessario accedere ai dati UTF-8 memorizzati all'interno di SQL Server da qualsiasi applicazione diverso da un browser (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, OLE DB, COM, chiamate all'API Win32, VB e C runtime stringa la modifica di funzioni non funzionano con i dati UTF-8. Il carico della conversione verrà spostato a un'altra applicazione. - Se i requisiti non includono la necessità di memorizzare i dati da una combinazione di linguaggi che non può essere soddisfatta da una pagina singola di codice, non sarà necessario utilizzare Unicode.
Supporto per Unicode è stato introdotto a partire da SQL Server 7.0 di SQL Server. Poiché SQL Server 6.5 non supporta la memorizzazione di dati Unicode, solo le opzioni per SQL Server 6.5 sono riportate nel passaggio 4 e passaggio 5.
Identificativo articolo: 232580 - Ultima modifica: mercoledì 7 dicembre 2005 - Revisione: 4.4
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
| kbmt kbinfo KB232580 KbMtit |
Traduzione automatica articoliIl presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo:
232580
(http://support.microsoft.com/kb/232580/en-us/
)
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.