Caratteristiche internazionali del driver JDBC
Le funzionalità di internazionalizzazione di Microsoft JDBC Driver per SQL Server includono quanto segue:
- Supporto per un'esperienza completamente localizzata nelle stesse lingue di SQL Server
- Supporto per le conversioni del linguaggio Java per i dati di SQL Server dipendenti dalle impostazioni locali
- Supporto per lingue internazionali, indipendentemente dal sistema operativo
- Supporto per nomi IDN (a partire da Microsoft JDBC Driver 6.0 per SQL Server)
Gestione dei dati di tipo carattere
I dati di tipo carattere in Java vengono gestiti come Unicode per impostazione predefinita. L'oggetto String Java rappresenta dati di tipo carattere Unicode. Nel driver JDBC l'unica eccezione a questa regola è costituita dai metodi per il richiamo e l'impostazione dei flussi ASCII, che rappresentano casi speciali poiché utilizzano flussi di byte con il presupposto implicito di singole tabelle codici conosciute (ASCII).
Il driver JDBC fornisce inoltre la proprietà della stringa di connessione sendStringParametersAsUnicode. che può essere utilizzata per specificare che i parametri preparati per i dati di tipo carattere verranno inviati in formato ASCII or MBCS (Multi-byte Character Set) anziché Unicode. Per altre informazioni sulla proprietà della stringa di connessione sendStringParametersAsUnicode, vedere Impostazione delle proprietà di connessione.
Conversioni in ingresso nel driver
I dati di tipo text Unicode provenienti dal server non devono essere convertiti. Vengono passati direttamente in formato Unicode. I dati non Unicode provenienti dal server vengono convertiti dalla tabella codici, a livello di database o di colonna, a Unicode. Per eseguire queste conversioni, il driver JDBC usa le routine di conversione JVM (Java Virtual Machine). Le conversioni vengono eseguite su tutti metodi getter per i flussi String e Character tipizzati.
Se JVM non dispone del supporto appropriato della tabella codici per i dati del database, il driver JDBC genera un'eccezione che indica che la tabella codici XXX non è supportata dall'ambiente Java. Per risolvere il problema, è necessario installare il supporto completo per caratteri internazionali richiesto per tale JVM.
Conversioni in uscita dal driver
I dati di tipo carattere che passano dal driver al server possono essere ASCII o Unicode. Ad esempio, i nuovi metodi per caratteri nazionali di JDBC 4.0, come i metodi setNString, setNCharacterStream e setNClob delle classi SQLServerPreparedStatement e SQLServerCallableStatement, inviano sempre i valori i parametri al server in formato Unicode.
D'altro canto, i metodi dell'API per caratteri non nazionali, ad esempio i metodi setString, setCharacterStream e setClob delle classi SQLServerPreparedStatement e SQLServerCallableStatement inviano i valori al server in formato Unicode solo quando la proprietà sendStringParametersAsUnicode è impostata su "true", che corrisponde al valore predefinito.
Parametri non Unicode
Per prestazioni ottimali con il tipo CHAR, VARCHAR o LONGVARCHAR di parametri non Unicode, impostare la proprietà della stringa di connessione sendStringParametersAsUnicode su "false" e usare i metodi per caratteri non nazionali.
Problemi di formattazione
Per la data, l'ora e le valute, tutte le operazioni di formattazione con i dati localizzati vengono eseguite a livello di linguaggio Java usando l'oggetto Locale e i diversi metodi di formattazione per i tipi di dati Date, Calendar e Number. Nei rari casi in cui il driver JDBC deve passare dati dipendenti dalle impostazioni locali in un formato localizzato, viene utilizzato il formattatore appropriato con le impostazioni locali JVM predefinite.
Supporto delle regole di confronto
Il driver JDBC 3.0 supporta tutte le regole di confronto supportate da SQL Server 2000 (8.x) e SQL Server 2005 (9.x), nonché le nuove regole di confronto o le nuove versioni dei nomi delle regole di confronto Windows introdotte in SQL Server 2008 (10.0.x).
Per altre informazioni sulle regole di confronto, vedere Supporto di Unicode e delle regole di confronto e Nome delle regole di confronto di Windows (Transact-SQL).
Uso di International Domain Names (IDN)
JDBC Driver 6.0 per SQL Server supporta l'uso di IDN (Internationalized Domain Name) e può convertire un serverName Unicode in codifica compatibile con ASCII (Punycode) quando richiesto durante una connessione. Se i nomi IDN vengono archiviati in Domain Name System (DNS) come stringhe ASCII in formato Punycode (specificato dal RFC 3490), abilitare la conversione del nome del server Unicode impostando la proprietà serverNameAsACE su true. In caso contrario, se il servizio DNS è configurato per consentire l'utilizzo di caratteri Unicode, impostare la proprietà serverNameAsACE su false (impostazione predefinita). Per le versioni precedenti del driver JDBC, è anche possibile convertire serverName in Punycode usando i metodi IDN.toASCII Java prima di impostare tale proprietà per una connessione.
Nota
La maggior parte dei software resolver scritti per piattaforme non Windows si basano sugli standard Internet DSN ed è pertanto più facile utilizzare il formato Punycode per nomi IDN, mentre un Server DNS basato su Windows in una rete privata può essere configurato per consentire l'utilizzo di caratteri UTF-8 in base a ciascun server. Per altre informazioni, vedere Supporto dei caratteri Unicode.