7 února, 2022

Sql-server-nvarchar to varchar to nvarchar characters conversion

Ne, neexistuje způsob, jak“ opravit “ data, protože data již neexistují. Při převodu na VARCHAR byly základní hodnoty pro každý znak změněny na hodnotu ASCII pro ?. Nejedná se o problém zobrazení, Tyto znaky jsou nyní fyzicky běžným otazníkem. Budete muset provést obnovení ze zálohy, bohužel.

následující příklad ukazuje, že jakmile je znak Unicode převeden na VARCHAR (za předpokladu, že kódová stránka označená kombinací tento znak nepodporuje), stane se regulárním otazníkem a navždy zůstane jako takový:

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

následující příklad ukazuje instanci znaku Unicode, který je velmi pochybný (alespoň v tomto okamžiku), který má být podporován ve většině písem, proto se jeví jako čtvercový rámeček, ale funkce UNICODE built-n ukazuje, že základní kód je stále správný kódový bod Unicode:

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

skutečný znak lze vidět zde: Cherokee malé písmeno YA u+ABBF. Jedná se o problém se zobrazením a mnoho znaků, které nejsou zastoupeny v různých písmech, se zobrazí stejným způsobem, aniž by se změnila skutečná hodnota znaku, ale stále se jedná o odlišné znaky.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.