MYSQL中VARCHAR长度怎么选?

  说明:IDE与数据库字段字符字符集均为UTF-8,MySQl版本5.7.x,JDK1.8.x

  在设计数据库的时候,我们往往要给字段设置最大长度:如下图所示,设定name字段最长长度为16,那么在插入数据的时候,最多可以插入多长的数据呢?

  先说结论:最长长度即调用java字符串的length方法返回的结果,即数据库字段的长度单位为 字符

  -----------------------------------------------------------------

  在String源码中可以看到,String的length()方法返回的长度是字符

   -----------------------------------------------------------------

  如果插入数据超过数据库字段的最大长度,则会抛出“Data too long for column”异常

 

 

 

   -----------------------------------------------------------------

  我们知道,由于中文的体系很大,中文与英文字符在计算机中的表示方式并不一样,但是如上图所示,16个汉字“哈”组成的字符串与15个字母与一个英文符号组成的字符串,其length方法调用返回值均为16,这是因为我们平时用的是字符,而每一个字符后面的字节数是不一定的。一般来说,UTF-8编码方式下,一个中文字符由3个字节组成;GBK编码方式下,一个中文字符由2个字节组成;ISO-8859-1编码方式下,一个中文字符由1个字节组成。由下面的图片可以推算出其对应关系。

  在Web开发过程中,一般由前端检测数据长度;为了防止前端的检测被绕过,可以在后端再做一次检测

posted @ 2020-02-11 16:54  神的彬彬  阅读(7444)  评论(0编辑  收藏  举报