■●为什么nvarchar(10)可以存10个汉字,varchar(10)只能存5个汉字呢?

为什么nvarchar(10)可以存10个汉字,varchar(10)只能存5个汉字呢?... 为什么nvarchar(10)可以存10个汉字,varchar(10)只能存5个汉字呢? 展开
 我来答
wuzhiyuanbj
2011-03-08
知道答主
回答量:17
采纳率:0%
帮助的人:5.7万
展开全部
nvarchar 和 varchar 的区别是存储方式不同
varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unicode来存储数据的。中文字符存储到SQL Server中会保存为两个字节(一般采用Unicode编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段的类型为nvarchar,则会占用两个字节。 varchar(40),能存储40个字节长度的字符,存储中文字符的时候,因为中文字符1个字符就等于2个字节,所以varchar(40)只能存储20个中文字符。nvarchar(40),就可以存储40个中文字符,也就是说可以存储80个字节长度的字符。nvarchar要相对于存储的字符类型.
正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar就会出现乱码(显示为??).而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数据,在开发阶段是发现不了的.多数情况下,在布署的时候也不会有问题.但是!如果布署的主机是英文操作系统,并且不支持中文环境,那问题就出来了.所有的varchar字段在存储中文的时候都会变成乱码(显示为??).而且一般情况下你不会知道这是因为你采用了错误的数据类型来存储所造成的,你会试着去装中文字体,试着去设置操作系统的语言环境...这些都不能解决问题,唯一能解决问题的是把数据库字段的类型个性为nvarchar(或者nchar).对项目管理比较熟悉的朋友应该都知道,到布署阶段再来修改数据库是一个很恐怖的事情.
当然,使用nvarchar存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的.
wangzhiqing999
2011-03-05 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3298万
展开全部
nvarchar (10) 里面的 10 是 10个 国际化字符 的长度, 也就是 可以存 10个 汉字
varchar(10)里面的 10 , 相当于 10个 字节, 可以存 10个 字母或者数字。

一个汉字 需要 2个字节的存储空间来存储
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MrFoch
2011-03-05 · TA获得超过849个赞
知道小有建树答主
回答量:253
采纳率:100%
帮助的人:268万
展开全部
单个char占1个字节,varchar(10)相当于一个可变char数组,大小为10字节。
一个nchar占2个字节。nvarchar(10)占20个字节。
一个汉字两个字节。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式