SQLserver 与mysql中的varchar()类型关于存储汉字的个数;字符与字节的区别
https://blog.csdn.net/qq_64314976/article/details/128604141
https://www.cnblogs.com/chenmingjun/p/8118083.html
今天遇到一个问题,mysql中的汉字,插入到sqlserver中报错,两边字段大小都是varchar(18)。
汉字个数超过了9个,所以在SQL server中报错我可以理解,因为1个汉字占用2个字节。
原来mysql中varchar()存储要看版本:
4.0版本以下,varchar(100) 存100字节,只能存33个汉字(一个汉字3字节);
5.0版本以上,varchar(100)存100字符,可以存100个汉字(一个汉字3字节);
UTF编码下汉字3字节;
GBK编码下汉字2字节。
字符与字节的区别:两者根本不是一回事,完全不同的概念。
1、计算机存储信息的最小单位,称之为位(bit),音译为比特,二进制的一个“0”或一个“1”叫一位。
2、计算机存储容量基本单位是字节(Byte),音译为拜特,8个二进制位组成1个字节。一般而言:一个标准英文字母占一个字节位置,一个标准汉字占二个字节位置。
3、计算机存储容量大小以字节数来度量,1024进位制:
1024B=1K(千)B
1024KB=1M(兆)B
1024MB=1G(吉)B
1024GB=1T(太)B
以下还有PB、EB、ZB、YB 、NB、DB,一般人不常使用了。
4、字符是一种符号,同以上说的存储单位不是一回事。