Condividi tramite


Traduzione automatica dei dati di caratteri

I dati di tipo carattere, ad esempio le variabili carattere ANSI dichiarate con SQL_C_CHAR o i dati archiviati in SQL Server usando i tipi di dati char, varchar o text , possono rappresentare solo un numero limitato di caratteri. I dati di tipo carattere archiviati usando un byte per carattere possono rappresentare solo 256 caratteri. I valori archiviati in SQL_C_CHAR variabili vengono interpretati usando la tabella codici ANSI (ACP) del computer client. I valori archiviati utilizzando tipi di dati char, varchar o text nel server vengono valutati utilizzando l'ACP del server.

Se il server e il client hanno lo stesso ACP, non hanno problemi nell'interpretare i valori archiviati in SQL_C_CHAR, char, varchar o text . Se il server e il client dispongono di ACL diversi, SQL_C_CHAR dati del client possono essere interpretati come un carattere diverso nel server se viene usato in colonne di tipo char, varchar o text , variabili o parametri. Ad esempio, un byte di carattere contenente il valore 0xA5 viene interpretato come il carattere ?? su un computer che utilizza la tabella codici 437 e viene interpretato come il segno yen (??) in un computer che esegue la tabella codici 1252.

I dati Unicode vengono archiviati usando due byte per carattere. Tutti i caratteri estesi sono coperti dalla specifica Unicode, quindi tutti i caratteri Unicode vengono interpretati come uguali da tutti i computer.

La funzionalità AutoTranslate del driver ODBC di SQL Server Native Client tenta di ridurre al minimo i problemi di spostamento dei dati di tipo carattere tra un client e un server con tabelle codici diverse. AutoTranslate può essere impostato nella stringa di connessione di SQLDriverConnect, nella stringa di configurazione di SQLConfigDataSource o durante la configurazione delle origini dati per il driver ODBC di SQL Server Native Client tramite l'amministratore ODBC ODBC.

Quando AutoTranslate è impostato su "no", non vengono eseguite conversioni sui dati spostati tra SQL_C_CHAR variabili nel client e colonne di tipo char, varchar o di testo , variabili o parametri in un database di SQL Server. I modelli di bit possono essere interpretati in modo diverso nei computer client e server se i dati contengono caratteri estesi e i due computer hanno tabelle codici diverse. I dati verranno interpretati allo stesso modo se entrambi i computer hanno la stessa tabella codici.

Quando AutoTranslate è impostato su "sì", il driver ODBC di SQL Server Native Client usa Unicode per convertire i dati spostati tra SQL_C_CHAR variabili nel client e colonne di tipo char, varchar o text , variabili o parametri in un database di SQL Server:

  • Quando i dati vengono inviati da una variabile SQL_C_CHAR sul client a una colonna char, varchar o text , variabile o parametro in un database di SQL Server, il driver ODBC esegue prima la conversione da SQL_C_CHAR a Unicode usando l'ACP del client, quindi da Unicode a carattere utilizzando l'ACP del server.

  • Quando i dati vengono inviati da una colonna char, varchar o text , variabile o parametro in un database di SQL Server a una variabile SQL_C_CHAR nel client, il driver ODBC di SQL Server Native Client converte prima da carattere a Unicode usando l'ACP del server, quindi da Unicode a SQL_C_CHAR utilizzando l'ACP del client.

Poiché tutte queste conversioni vengono eseguite dal driver ODBC di SQL Server Native Client in esecuzione nel client, il server ACP deve essere una delle tabelle codici installate nel computer client.

L'esecuzione delle conversioni di caratteri tramite Unicode garantisce la conversione corretta di tutti i caratteri presenti in entrambe le tabelle codici. Se un carattere esiste in una tabella codici ma non in un altro, tuttavia, il carattere non può essere rappresentato nella tabella codici di destinazione. Ad esempio, la tabella codici 1252 ha il simbolo di marchio registrato (??), mentre la tabella codici 437 non lo fa.

L'impostazione AutoTranslate non ha alcun effetto sulle conversioni seguenti:

  • Spostamento di dati tra caratteri SQL_C_CHAR variabili client e colonne Unicode nchar, nvarchar o ntext , variabili o parametri nei database di SQL Server.

  • Spostamento di dati tra unicode SQL_C_WCHAR variabili client e colonne di tipo carattere, varchar o testo , variabili o parametri nei database di SQL Server.

I dati devono essere sempre convertiti quando vengono spostati da carattere a Unicode.

Vedere anche

Elaborazione dei risultati (ODBC)
Collazione e supporto Unicode