今天遇到乙個小問題,使用utf-8這種unicode編碼儲存格式時,用js中的字串的length屬性獲取輸入框中輸入的字元長度時,輸入中文也是按乙個字元算,剛才查了下資料,原來在js中字串的長度不分中英文本元, 每乙個字元都算乙個長度,於是自己寫了個strlen函式,讓它按輸入乙個英文本元算乙個字元,乙個中文字元算三個字元來算字元個數:
function getstrlen(str)else len=len+3;
}return len;
}
(charcodeat()方法可返回指定位置的字元的 unicode 編碼。)
備忘:
**[1]
[字元編碼ascii,unicode和utf-8概念掃盲]
unicode是一種符號集,能儲存世界上所有文字元號,所以是一種通用的編碼,而utf-8則是最通用的unicode編碼的儲存格式,utf-8最大的乙個特點,就是它是一種變長的編碼方式。它可以使用1~4個位元組表示乙個符號,根據不同的符號而變化位元組長度。
utf-8的編碼規則很簡單,只有二條:
1)對於單位元組的符號,位元組的第一位設為0,後面7位為這個符號的unicode碼。因此對於英語字母,utf-8編碼和ascii碼是相同的。
2)對於n位元組的符號(n>1),第乙個位元組的前n位都設為1,第n+1位設為0,後面位元組的前兩位一律設為10。剩下的沒有提及的二進位制位,全部為這個符號的unicode碼。
下表總結了編碼規則,字母x表示可用編碼的位。
unicode符號範圍 | utf-8編碼方式
(十六進製制) | (二進位制)
——————–+———————————————
0000 0000-0000 007f | 0******x
0000 0080-0000 07ff | 110***xx 10******
0000 0800-0000 ffff | 1110***x 10****** 10******
0001 0000-0010 ffff | 11110*** 10****** 10****** 10******
js計算字元長度
一 獲取中英文混合的長度 乙個漢字是2個位元組,乙個數字和乙個英文是1個位元組 方法一 unicode 漢字的編碼大於255 export const datalength fdata return intlength 注 unicode長度為2,非unicode長度為1 方法二 export co...
android中的字元長度
在.net裡 system.text.encoding.default getbytes strdata 漢字,假名都是佔兩個位元組。但是在android裡,originalchar.getbytes length view plain cop uft 8編碼格式下,漢字和假名都是佔三個位元組。下面...
JS計算字串的長度
最近專案上經常要用到計算字串的長度的問題,有時需要按照byte進行計算長度,所以我就想在頁面上用js實現,於是就到網上查了相關的資料,發現確實有很多的版本,這裡給出兩個比較好用的。方法一 逐個字元檢查是否中文字元 string.prototype.getbytelen function return...