<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存儲時占用字節長度。JavaScript的String對象有length屬性,但是這個計算的是字符數,不是字節數(問題總是翻來覆去的,記得當年玩Delphi的時候,還得寫程序計算字符串的字符數,因為Delphi中String的length是字節數...)。偷懶一點的辦法是將驗證代碼中最大長度設置為數據庫中對應字段的長度的1/3,但是這樣準確來說有點不合適。

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

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

     

    于是代碼如下:

    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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 添bbb免费观看高清视频| 天天爽亚洲中文字幕| 一个人免费观看视频在线中文| 免费理论片51人人看电影| 精品日韩99亚洲的在线发布| 国产大片免费网站不卡美女 | 久久九九兔免费精品6| 亚洲蜜芽在线精品一区| 69免费视频大片| 亚洲午夜久久久久久尤物| 一二三四影视在线看片免费| 中文字幕乱码亚洲无线三区| 精品久久久久久久免费加勒比| 美女羞羞喷液视频免费| 亚洲午夜AV无码专区在线播放| 国产精品1024在线永久免费| 亚洲精品乱码久久久久久按摩| 99热在线日韩精品免费| 亚洲综合久久成人69| 好吊妞788免费视频播放| 黄色一级视频免费| 国产亚洲精品a在线无码| 在线观看www日本免费网站| 亚洲午夜国产精品| 又粗又大又猛又爽免费视频| 99精品免费视频| 亚洲一卡2卡3卡4卡国产网站| 好爽好紧好大的免费视频国产 | 黄页网址在线免费观看| 亚洲人色婷婷成人网站在线观看| 99久久国产免费中文无字幕| 亚洲综合色丁香婷婷六月图片| 亚洲av中文无码| 全免费a级毛片免费看| www.亚洲日本| 中文亚洲AV片在线观看不卡| free哆啪啪免费永久| 老司机午夜性生免费福利| 亚洲国产综合精品中文第一区| 麻豆国产入口在线观看免费| kk4kk免费视频毛片|