mysql varchar(255)在5.7版本中其实表示的是255个字符串。这个长度并不是length()的长度而是char_length长度。中国人就是3个长度。而不是按照中国人的字节占用9个来算的。
mysql> set @c = '中国人';
Query OK, 0 rows affected (0.00 sec)
mysql> select @c,length(@c),char_length(@c);
+-----------+------------+-----------------+
| @c | length(@c) | char_length(@c) |
+-----------+------------+-----------------+
| 中国人 | 9 | 3 |
+-----------+------------+-----------------+
1 row in set (0.00 sec)
golang
var s string
s = "中国人"
fmt.Println(len(s),len([]rune(s))) // 9 3
php
<?php
$s = "中国人";
echo strlen($s); // 9
echo mb_strlen($s); // 3