猿问

用js如何正确判断输入的内容存储在mysql的长度是多少?

假如我输入

年薪30K以上

这个用 length 属性判断后长度是 7

我的数据库编码是utf8mb4,一个汉字的长度相当于4
但是如果这个字段存入数据库后相当于19

加入我输入了【年薪30K以上】这个内容,我应该如何用js才能计算出他的长度是19


蝴蝶不菲
浏览 534回答 2
2回答

繁花如伊

utf8是变长编码的字符存储方式,utf8mb4只是每个字符最大长度占4字节,而非任一字符都占4字节。原本MySQL的utf8只能储存基本多语言平面(BMP)上的字符。utf8mb4编码之下,BMP上的字符和utf8编码完全相同,常用汉字仍然只占3个字节,真正占用四个字节的字符常见的只有姓名生辟字和表情符号。在MySQL数据库中varchar字段的长度是按字符来描述的,而不是字节,所以“年薪30K以上”用varchar(7)的字段就可以存得下。你可以自己试试:CREATE TEMPORARY TABLE `test` (txt VARCHAR(7) NOT NULL) CHARSET='utf8mb4';INSERT INTO `test` VALUES ('年薪30K以上');然而下面这个却保存不下:INSERT INTO `test` VALUES ('12345678');  ERROR 1406 (22001): Data too long for column 'txt' at row 1至于计算文本的utf8mb4编码字符串的字节长度,可以按字符编码范围来判断,根据RFC-3629的规范:从U+0000到U+007F占一个字节从U+0080到U+07FF占两个字节从U+0800到U+FFFF占三个字节从U+10000到U+10FFFF占四个字节
随时随地看视频慕课网APP
我要回答