存储中文,字段是varchar,为什么不是nvarchar?

  • 存储中文,字段是varchar,为什么不是nvarchar?
  • varchar 在SQL Server中是采用单字节来存储数据,nvarchar是使用Unicode来存储数据。中文字符存储到SQL Server中会保存为两个字节(一般采用Unicode编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段的类型为nvarchar,则会占用两个字节。
    正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操作系统并且对中文字体的支持不全面时,在SQL Server存储中文字符为varchar就会出现乱码(显示为??)。而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数据,在开发阶段是发现不了的,多数情况下,在布署阶段出现问题。
    当然,使用nvarchar存储英文字符会增大一倍的存储空间,但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多的好处.
    所以在设计的时候应该尽量使用nvarchar来存储数据,只有在你确保该字段不会保存中文的时候,才采用varchar来存储。

7 Replies to “存储中文,字段是varchar,为什么不是nvarchar?”

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据