Sql-server-Nvarchar to varchar to nvarchar characters conversion
Ei, tietoja ei voi ”korjata”, koska tietoja ei enää ole. Kun muunnettiin arvoksi VARCHAR
, kunkin merkin perusarvot muutettiin ASCII-arvoksi arvolle ?
. Tämä ei ole näyttöasia, nuo merkit ovat nyt fyysisesti säännöllinen kysymysmerkki. Sinun täytyy tehdä palauttaa varmuuskopiosta, valitettavasti.
seuraava esimerkkikoodi osoittaa, että kun Unicode-merkki muunnetaan arvoon VARCHAR
(olettaen, että vertailussa merkitty koodisivu ei tue kyseistä merkkiä), siitä tulee säännöllinen ” ol kysymysmerkki, ja se pysyy sellaisena ikuisesti:
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
seuraavassa esimerkissä on esitetty esiintymä Unicode-merkistöstä, joka on erittäin kyseenalainen (ainakin tällä hetkellä) tuettavaksi useimmissa fonteissa, joten se esiintyy neliömäisenä laatikkona, mutta UNICODE
built-n-funktio osoittaa, että taustalla oleva koodi on edelleen oikea Unicode-Koodipiste:
SELECT NCHAR(0xABBF), N'ꮿ', UNICODE(N'ꮿ');-- ꮿ ꮿ 43967
varsinaisen merkin voi nähdä täältä: Cherokee pieni kirjain YA U + ABBF. Tämä on näytön ongelma, ja monet merkit, joita ei ole esitetty eri fonteissa, näkyvät samalla tavalla muuttamatta merkin todellista arvoa, mutta ne ovat silti erillisiä merkkejä.