Sql-server-Nvarchar til varchar til nvarchar tegn konvertering
Nei, det er ingen måte å «fikse» dataene fordi dataene ikke lenger er der. Når du konverterte til VARCHAR
, ble de underliggende verdiene for hvert tegn endret TIL ASCII-verdien for ?
. Dette er ikke et skjermproblem, disse tegnene er nå fysisk et vanlig spørsmålstegn. Du må gjøre en gjenoppretting fra en sikkerhetskopi, dessverre.
følgende eksempelkode viser at Når Et Unicode-tegn er konvertert til VARCHAR
(forutsatt At Kodesiden betegnet Av Sorteringen ikke støtter det tegnet), blir Det et vanlig ‘ol-spørsmålstegn, og for alltid skal det forbli som sådan:
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
følgende eksempel viser en forekomst Av Et Unicode-tegn som er svært tvilsomt (minst på dette tidspunktet) som skal støttes i de fleste skrifter, derfor vises det som en firkantet boks, men funksjonen UNICODE
innebygd n viser at den underliggende koden fortsatt er riktig Unicode-Kodepunkt:
SELECT NCHAR(0xABBF), N'ꮿ', UNICODE(N'ꮿ');-- ꮿ ꮿ 43967
den faktiske karakteren kan ses her: Cherokee Liten Bokstav YA U + ABBF. Dette er et visningsproblem, og mange tegn som ikke er representert i ulike skrifter, vises på samme måte uten å endre den faktiske verdien av tegnet, men de er fortsatt forskjellige tegn.