In base a this, SQL Server 2K5 utilizza UCS-2 internamente. Può memorizzare dati UTF-16 in UCS-2 (con tipi di dati appropriati, nchar, ecc.), Tuttavia se è presente un carattere supplementare questo è memorizzato come 2 caratteri UCS-2.Memorizzazione di dati UTF-16/Unicode in SQL Server
Questo porta gli ovvi problemi con le funzioni di stringa, vale a dire che quello che è un carattere viene trattato come 2 da SQL Server.
Mi sorprende un po 'che SQL Server sia fondamentalmente in grado di gestire solo UCS-2 e ancor più che questo non sia risolto in SQL 2K8. Apprezzo che alcuni di questi personaggi potrebbero non essere così comuni.
Oltre alle funzioni suggerite nell'articolo, qualsiasi suggerimento sull'approccio migliore per gestire le funzioni di stringa (interrotte) e i dati UTF-16 in SQL Server 2K5.
Quali funzioni di stringa sono danneggiate per favore? – gbn
LEN restituirà il numero di caratteri UCS-2 nella stringa, non il numero di caratteri UTF-16. SUBSTRING dividerà i caratteri UTF-16 a metà. Lo stesso vale per SINISTRA e DESTRA. Anche UPPER e LOWER probabilmente si rompono. REVERSE si romperebbe sicuramente. CHARINDEX e PATINDEX anche. Non sono sicuro su DIFFERENCE e STUFF. Quindi molti di loro .... –
Grazie per aver segnalato questo. Il fatto che non supporti TUTTI i caratteri Unicode significa che alcuni valori di stringa UTF-16 (ad esempio da Windows o .NET) non sono validi per eseguire il dump in SQL Server senza verifica. Affinché qualsiasi applicazione sia priva di bug e tecnicamente corretta (il modo in cui i personaggi RARE che causano errori non fanno un po 'di differenza per quanto riguarda la correttezza), TUTTE le stringhe devono essere convalidate per contenere i caratteri compatibili con UCS-2 prima essere archiviati in SQL Server. Meraviglioso! Modo per rendere il mio lavoro molto più difficile Microsoft. – Triynko