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

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


    網站導航:
     
    主站蜘蛛池模板: 中文字幕无码视频手机免费看| 国产免费观看a大片的网站| 亚洲综合久久夜AV | 国产午夜亚洲精品不卡免下载| 韩国二级毛片免费播放| 亚洲综合熟女久久久30p| 亚欧乱色国产精品免费视频| 伊人久久亚洲综合影院| 亚洲美女中文字幕| 九九九国产精品成人免费视频| 国产片免费在线观看| 亚洲熟妇无码久久精品| 日本zzzzwww大片免费| 亚洲AV成人无码天堂| 中文字幕免费播放| 国产成人3p视频免费观看| 看亚洲a级一级毛片| 亚洲黄片手机免费观看| 亚洲爆乳成av人在线视菜奈实| 九九美女网站免费| 亚洲黄色免费在线观看| 黄页免费的网站勿入免费直接进入| 亚洲狠狠婷婷综合久久久久 | 色吊丝永久在线观看最新免费| 亚洲欧美日韩中文高清www777| 伊人免费在线观看高清版| 四虎影在线永久免费四虎地址8848aa| MM1313亚洲国产精品| 亚洲色WWW成人永久网址| 猫咪免费观看人成网站在线| 毛片免费观看的视频| 亚洲嫩草影院在线观看| 日韩免费高清视频| 中文字幕在线免费看| 亚洲电影免费观看| 免费人成年激情视频在线观看| 亚洲人成人伊人成综合网无码| 亚洲成a人在线看天堂无码| 国产婷婷成人久久Av免费高清| 亚洲色图激情文学| 性xxxx视频播放免费|