Javascript計算字符串在localStorage中所占字節數_javascript技巧
來源:懂視網
責編:小采
時間:2020-11-27 21:44:37
Javascript計算字符串在localStorage中所占字節數_javascript技巧
Javascript計算字符串在localStorage中所占字節數_javascript技巧:最近項目有個需求要用js計算一串字符串寫入到localStorage里所占的內存,眾所周知的,js是使用Unicode編碼的。而Unicode的實現有N種,其中用的最多的就是UTF-8和UTF-16。因此本文只對這兩種編碼進行討論。 下面這個定義摘自維基百科(http://zh.w
導讀Javascript計算字符串在localStorage中所占字節數_javascript技巧:最近項目有個需求要用js計算一串字符串寫入到localStorage里所占的內存,眾所周知的,js是使用Unicode編碼的。而Unicode的實現有N種,其中用的最多的就是UTF-8和UTF-16。因此本文只對這兩種編碼進行討論。 下面這個定義摘自維基百科(http://zh.w

最近項目有個需求要用js計算一串字符串寫入到localStorage里所占的內存,眾所周知的,js是使用Unicode編碼的。而Unicode的實現有N種,其中用的最多的就是UTF-8和UTF-16。因此本文只對這兩種編碼進行討論。
下面這個定義摘自維基百科(http://zh.wikipedia.org/zh-cn/UTF-8),做了部分刪減。
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,可以表示Unicode標準中的任何字符,且其編碼中的第一個字節仍與ASCII相容,使用一至四個字節為每個字符編碼
其編碼規則如下:
字符代碼在000000 – 00007F之間的,用一個字節編碼;
000080 – 0007FF之間的字符用兩個字節;
000800 – 00D7FF 和 00E000 – 00FFFF之間的用三個字節,注: Unicode在范圍 D800-DFFF 中不存在任何字符;
010000 – 10FFFF之間的用4個字節。
而UTF-16 則是定長的字符編碼,大部分字符使用兩個字節編碼,字符代碼超出 65535 的使用四個字節,如下:
000000 – 00FFFF 兩個字節;
010000 – 10FFFF 四個字節。
一開始認為既然頁面用的是UTF-8編碼,那么存入localStorage的字符串,應該也是用UTF-8編碼的。但后來測試發現,明明計算出的size是不到5MB,存入localStorage卻拋異常了。想了想,頁面的編碼是可以改的。如果localStorage按照頁面的編碼存字符串,不就亂套了?瀏覽器應該都是使用UTF-16編碼的。用UTF-16編碼計算出5MB的字符串,果然順利寫進去了。超過則失敗了。
好了,附上代碼實現。計算規則就是上面寫的,為了計算速度,把兩個for循環分開寫了。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
Javascript計算字符串在localStorage中所占字節數_javascript技巧
Javascript計算字符串在localStorage中所占字節數_javascript技巧:最近項目有個需求要用js計算一串字符串寫入到localStorage里所占的內存,眾所周知的,js是使用Unicode編碼的。而Unicode的實現有N種,其中用的最多的就是UTF-8和UTF-16。因此本文只對這兩種編碼進行討論。 下面這個定義摘自維基百科(http://zh.w