Febbraio 7, 2022

Sql-server – Nvarchar a varchar a nvarchar characters conversion

No, non c’è modo di “correggere” i dati perché i dati non ci sono più. Quando è stato convertito in VARCHAR, i valori sottostanti per ciascun carattere sono stati modificati nel valore ASCII per ?. Questo non è un problema di visualizzazione, quei caratteri sono ora fisicamente un punto interrogativo regolare. Avrete bisogno di fare un ripristino da un backup, purtroppo.

Il seguente codice di esempio mostra che una volta un carattere Unicode è convertito VARCHAR (supponendo che il Codice della Pagina indicata dal Confronto non supporta quel personaggio), che diventa un normale ‘ol punto di domanda, e per sempre rimarrà come tale:

DECLARE @Character NCHAR(1) = NCHAR(0x3525);SELECT @Character AS , UNICODE(@Character) AS , ASCII(@Character) AS , UNICODE(CONVERT(VARCHAR(5), @Character)) AS , UNICODE(CONVERT(NVARCHAR(5), CONVERT(VARCHAR(5), @Character))) AS , ASCII('?') AS , UNICODE(N'?') AS ;-- 㔥 13605 63 63 63 63 63

L’esempio seguente mostra un esempio di un carattere Unicode che è altamente improbabile (almeno al momento) di essere supportato nella maggior parte dei tipi di carattere, di conseguenza, appare come un quadrato, ma il UNICODE built-n funzione mostra che il codice di base è ancora il corretto Punto di Codice Unicode:

SELECT NCHAR(0xABBF), N'ꮿ', UNICODE(N'ꮿ');-- ꮿ ꮿ 43967

Il personaggio reale può essere visto qui: Cherokee Small Letter YA U + ABBF. Questo è un problema di visualizzazione e molti caratteri che non sono rappresentati in vari tipi di carattere verranno visualizzati nello stesso modo senza alterare il valore effettivo del carattere, ma sono comunque caratteri distinti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.