<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 42  文章 - 71  trackbacks - 0
    <2008年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    最近和JavaScript糾纏上了。

    遇到這么一個問題,數據庫的字符集為UTF-8的,要在頁面上使用JavaScript驗證輸入的文本用UTF-8存儲時占用字節(jié)長度。JavaScript的String對象有l(wèi)ength屬性,但是這個計算的是字符數,不是字節(jié)數(問題總是翻來覆去的,記得當年玩Delphi的時候,還得寫程序計算字符串的字符數,因為Delphi中String的length是字節(jié)數...)。偷懶一點的辦法是將驗證代碼中最大長度設置為數據庫中對應字段的長度的1/3,但是這樣準確來說有點不合適。

    所以想辦法在JavaScript中判斷在UTF-8下存儲的String的字節(jié)數,在網上找到很多關于Unicode介紹的文檔,最重要的是字符編碼數值對應的存儲長度:

    UCS-2編碼(16進制) UTF-8 字節(jié)流(二進制)
    0000 - 007F 0xxxxxxx (1字節(jié))
    0080 - 07FF 110xxxxx 10xxxxxx (2字節(jié))
    0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx (3字節(jié))

     

    于是代碼如下:

    function mbStringLength(s) {
            var totalLength = 0;
            var i;
            var charCode;
            for (i = 0; i < s.length; i++) {
              charCode = s.charCodeAt(i);
              if (charCode < 0x007f) {
                totalLength = totalLength + 1;
              } else if ((0x0080 <= charCode) && (charCode <= 0x07ff)) {
                totalLength += 2;
              } else if ((0x0800 <= charCode) && (charCode <= 0xffff)) {
                totalLength += 3;
              }
            }
            //alert(totalLength);
            return totalLength;
          }

     

    實際上,0x0080到0x07ff之間的字符很少會在實際用戶輸入中用到。

     

    參考文檔:

    程序員趣味讀物:談談Unicode編碼 http://www.lihuasoft.net/article/show.php?id=2778

    posted on 2008-05-29 17:39 YODA 閱讀(5785) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产精品白浆在线观看免费| 大地资源免费更新在线播放| 麻豆最新国产剧情AV原创免费| 亚洲精品网站在线观看不卡无广告 | 亚美影视免费在线观看| 成在人线AV无码免费| 噜噜噜亚洲色成人网站∨| 亚洲第一视频在线观看免费| 亚洲视频一区二区三区| 国产精品自在自线免费观看| 亚洲美女激情视频| 免费一级毛片不卡在线播放| 日韩精品亚洲专区在线影视| 毛片免费观看的视频在线| 国产三级在线免费观看| 亚洲天堂在线视频| 成av免费大片黄在线观看| 亚洲午夜久久久久妓女影院| 一级特级女人18毛片免费视频| 亚洲国产av一区二区三区| 一级A毛片免费观看久久精品| 亚洲А∨精品天堂在线| 中文字幕免费视频一| 久久综合亚洲色一区二区三区| 免费a级毛片无码av| 男女免费观看在线爽爽爽视频| 无遮挡免费一区二区三区| 亚洲噜噜噜噜噜影院在线播放| 四虎在线视频免费观看视频| 麻豆狠色伊人亚洲综合网站| 国产精品久久久久久久久久免费 | 春意影院午夜爽爽爽免费| 国产日本亚洲一区二区三区 | 亚洲av无码av制服另类专区| 亚洲国产精品免费视频| 亚洲欧洲自拍拍偷综合| 全免费a级毛片免费看无码| 老司机免费午夜精品视频| 亚洲色精品vr一区二区三区| 日韩免费三级电影| 美女在线视频观看影院免费天天看|