为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蝴蝶不菲 2019-02-26 19:59:49
假如我输入年薪30K以上这个用 length 属性判断后长度是 7我的数据库编码是utf8mb4,一个汉字的长度相当于4但是如果这个字段存入数据库后相当于19加入我输入了【年薪30K以上】这个内容,我应该如何用js才能计算出他的长度是19
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

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+0000U+007F占一个字节

  • U+0080U+07FF占两个字节

  • U+0800U+FFFF占三个字节

  • U+10000U+10FFFF占四个字节


查看完整回答
反对 回复 2019-02-26
  • 2 回答
  • 0 关注
  • 533 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信