SQLserver 与mysql中的varchar()类型关于存储汉字的个数;字符与字节的区别

发布时间 2023-06-01 17:35:01作者: yinghualeihenmei

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、字符是一种符号,同以上说的存储单位不是一回事。