关于GB2312、GBK、unicode、utf-8以及数据库方面的疑问
最近在应用二进制数据时,想到汉字是用两字节表示,英文是用一字节表示。这在VB里面用unicode函数的。又想到两字节最多代表65535个数。汉字难道只有6万个多个吗?所以...
最近在应用二进制数据时,想到汉字是用两字节表示,英文是用一字节表示。这在VB里面用unicode函数的。又想到两字节最多代表65535个数。汉字难道只有6万个多个吗?所以才专门了解下编码标准。但是很多文章的说法似乎不太统一。GB2312最初也就是编码了2312个汉字(后增加至6762)采用双字节;GB13080编码了13080个汉字,采用2/4字节,也就是有些新字符用了4字节,兼容原来的二字节GB2312。而GBK是中日韩等亚洲语言统一的编码。包含55657个字符,也兼容GB2312,还是用两字节。UTF-8是一个新的标准,字符全部采用三字节。如果英文也用三字节,当然会占用更大的空间。都说unicode是最统一的编码标准,我目前知道它表示英文用一字节,汉字用双字节,那么有些语言可能会有三字节的情况吧。既然有了unicode这种既节省空间又国际化的标准,为什么还要用UTF-8呢。所以想到了我们经常用的数据库,比如使用mysql经常是用utf-8,那岂不是很占空间吗。还有SQL的varchar数据说是英文字符的类型,可是里面也能存储中文。不是nvarchar才是包含中文类型吗。还有我们经常用的自动编号。这个数字是常整形的。假如数据量特别大,超过了常整数范围,又会怎样呢??
展开
1个回答
展开全部
1.utf-8是节省空间的,utf-8是8位的unicode.而常说的unicode是utf-16。因为很多常用的英文字母只占8位,utf-16则至少是16位。utf-8比utf-16的单元更小,所以压缩度更大,更节约空间。
2.Unicode
数据使用
SQL
Server
中的
nchar、varchar
和
ntext
数据类型进行存储。对于存储来源于多种字符集的字符的列,可采用这些数据类型。当列中各项所包含的
Unicode
字符数不同时(至多为
4000),使用
nvarchar
类型。当列中各项为同一固定长度时(至多为
4000
个
Unicode
字符),使用
nchar
类型。当列中任意项超过
4000
个
Unicode字符时,使用
ntext
类型。(所以说,varchar和nvarchar是存储unicode类型的!)
3.如果超出了范围肯定会造成溢出的
2.Unicode
数据使用
SQL
Server
中的
nchar、varchar
和
ntext
数据类型进行存储。对于存储来源于多种字符集的字符的列,可采用这些数据类型。当列中各项所包含的
Unicode
字符数不同时(至多为
4000),使用
nvarchar
类型。当列中各项为同一固定长度时(至多为
4000
个
Unicode
字符),使用
nchar
类型。当列中任意项超过
4000
个
Unicode字符时,使用
ntext
类型。(所以说,varchar和nvarchar是存储unicode类型的!)
3.如果超出了范围肯定会造成溢出的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询