7 helmikuun, 2022

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ä.

Vastaa

Sähköpostiosoitettasi ei julkaista.