有机会从varchar列中恢复unicode数据

gru*_*ber 2 sql sql-server-2005

Unicode数据(西里尔字母)被写入类型为的数据库列 varchar

有机会以正确的格式恢复该数据吗?

不必完全恢复,一切都会很好

谢谢你的帮助

Mar*_*ith 5

没有。

这是一种有损转换,因为双字节字符可能无法全部以单字节格式表示。默认排序规则代码页中所有不可强制使用的字符都将转换为?

没有办法对?原本应该表示的内容或沿途可能发生的任何其他较不严重的转换进行逆向工程(例如,将字符转换为有点相似的同形字符)。

DECLARE @T TABLE 
(
V VARCHAR(10)
)
INSERT INTO @T 
VALUES (N'???????');

SELECT V,
       CAST(V AS VARBINARY(10))
FROM @T
Run Code Online (Sandbox Code Playgroud)

输出量

V          
---------- ----------------------
???????    0x3F3F3F3F3F3F3F
Run Code Online (Sandbox Code Playgroud)

您可以清楚地看到源中所有不同的字符都存储为相同的东西。