第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用js如何正確判斷輸入的內(nèi)容存儲在mysql的長度是多少?

用js如何正確判斷輸入的內(nèi)容存儲在mysql的長度是多少?

蝴蝶不菲 2019-02-26 19:59:49
假如我輸入年薪30K以上這個用 length 屬性判斷后長度是 7我的數(shù)據(jù)庫編碼是utf8mb4,一個漢字的長度相當于4但是如果這個字段存入數(shù)據(jù)庫后相當于19加入我輸入了【年薪30K以上】這個內(nèi)容,我應該如何用js才能計算出他的長度是19
查看完整描述

2 回答

?
繁花如伊

TA貢獻2012條經(jīng)驗 獲得超12個贊

utf8是變長編碼的字符存儲方式,utf8mb4只是每個字符最大長度占4字節(jié),而非任一字符都占4字節(jié)。

原本MySQL的utf8只能儲存基本多語言平面(BMP)上的字符。utf8mb4編碼之下,BMP上的字符和utf8編碼完全相同,常用漢字仍然只占3個字節(jié),真正占用四個字節(jié)的字符常見的只有姓名生辟字和表情符號。

在MySQL數(shù)據(jù)庫中varchar字段的長度是按字符來描述的,而不是字節(jié),所以“年薪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編碼字符串的字節(jié)長度,可以按字符編碼范圍來判斷,根據(jù)RFC-3629的規(guī)范:

  • U+0000U+007F占一個字節(jié)

  • U+0080U+07FF占兩個字節(jié)

  • U+0800U+FFFF占三個字節(jié)

  • U+10000U+10FFFF占四個字節(jié)


查看完整回答
反對 回復 2019-02-26
  • 2 回答
  • 0 關注
  • 550 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號