1.把字段类型改为nvarchar
解释:
- varchar类型的列使用ANSI编码,也即GBK存储数据(不能存储emoji表情)
- nvarchar类型的列使用UTF-16编码存储数据(能存储所有Unicode字符,包含emoji表情)
UTF-16编码规则最少使用2个字节存储字符,即使对于英文字母“W”也要使用两个字节,而GBK编码则可以使用1个字节存储英文字母“W”,所有当只有英文字母时,varchar显然要节省空间。
2.sql语句调整下 改成这种 前面加个N
-
insert into test values(N'王',N'王')
解释:
这个大N表示单引号中的字符串使用的是Unicode编码,当我们sqlserver引擎会用Unicode的方式去解析"小明",而不是用GBK编码的方式。
一般来说,我们感觉不到加不加大N的区别,那是因为我们存储的数据都在Unicode的常见字符区域内,如果我们存储一个emoji表情,那么加不加大N的就立马看得出来了