为什么我可以将非ascii字符插入VARCHAR列并正确地将其恢复?

时间:2015-03-06 00:07:20

标签: sql-server string unicode encoding collation

以下是我的代码示例。

DECLARE @a TABLE (a VARCHAR(20));
INSERT  @a
        (a)
VALUES  ('中');

SELECT  *
FROM    @a;

我正在使用SQL Server Management Studio来运行它。我的问题是,为什么我可以在VARCHAR列中插入非ascii字符并正确地将其恢复?据我所知,VARCHAR类型仅适用于ascii字符,而NVARCHAR适用于unicode字符。有人可以帮忙解释一下吗?我在Windows 7上使用SQL Server 2014开发人员版。

2 个答案:

答案 0 :(得分:2)

用于存储varchar数据的代码页因DB排序规则而异。

https://msdn.microsoft.com/en-us/library/ms189617.aspx

Varchar是8位,所以你可能有不同的排序规则,或者你可能已经很幸运你的角色落在代码集上

答案 1 :(得分:0)

您可以在下面找到ASCIIExtended ASCII个字符。

<强> ASCII

enter image description here

扩展ASCII

enter image description here

我不相信&#39;中&#39;是ASCII字符。

www.asciitable.com