februar 7, 2022

kvm-server – nvarchar til varchar til nvarchar tegn konvertering

Nej, der er ingen måde at “rette” dataene på, fordi dataene ikke længere er der. Når du konverterede til VARCHAR, blev de underliggende værdier for hvert tegn ændret til ASCII-værdien for ?. Dette er ikke et displayproblem, disse tegn er nu fysisk et almindeligt spørgsmålstegn. Du bliver nødt til at gøre en gendannelse fra en sikkerhedskopi, desværre.

følgende eksempelkode viser, at når et Unicode-tegn er konverteret til VARCHAR (forudsat at kodesiden betegnet med sorteringen ikke understøtter dette tegn), at det bliver et almindeligt ‘ OL spørgsmålstegn, og for evigt skal det forblive 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 af et Unicode-tegn, der er meget tvivlsomt (i det mindste på dette tidspunkt), der skal understøttes i de fleste skrifttyper, og derfor vises det som en firkantet boks, men UNICODE indbygget n-funktion viser, at den underliggende kode stadig er det korrekte Unicode-kodepunkt:

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

den faktiske karakter kan ses her: Cherokee lille bogstav YA U+ABBF. Dette er et displayproblem, og mange tegn, der ikke er repræsenteret i forskellige skrifttyper, vises på samme måde uden at ændre tegnets faktiske værdi, men de er stadig forskellige tegn.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.