站長資訊網
        最全最豐富的資訊網站

        JavaScript實現UTF-8編解碼

        JavaScript實現UTF-8編解碼

        免費學習推薦:javascript視頻教程

        首先簡單介紹一下UTF-8。UTF-8以字節為單位對Unicode進行編碼。 UTF-8的特點是對不同范圍的字符使用不同長度的編碼。對于0x00-0x7F之間的字符,UTF-8編碼與ASCII編碼完全相同。 UTF-8編碼的最大長度是6個字節。6字節模板有31個x,即可以容納31位二進制數字。 Unicode的最大碼位0x7FFFFFFF也只有31位。

        從Unicode到UTF-8的編碼方式如下:

        Unicode編碼(十六進制) UTF-8 字節流(二進制)
        000000-00007F 0xxxxxxx
        000080-0007FF 110xxxxx 10xxxxxx
        000800-00FFFF 1110xxxx 10xxxxxx 10xxxxxx
        010000-10FFFF 11110xxx10xxxxxx10xxxxxx10xxxxxx

        以下是js實現代碼,首先是編碼

        function utf8Encode(inputStr) {   var outputStr = "";      for(var i = 0; i < inputStr.length; i++) {     var temp = inputStr.charCodeAt(i);          //0xxxxxxx     if(temp < 128) {       outputStr += String.fromCharCode(temp);     }     //110xxxxx 10xxxxxx     else if(temp < 2048) {       outputStr += String.fromCharCode((temp >> 6) | 192);       outputStr += String.fromCharCode((temp & 63) | 128);     }     //1110xxxx 10xxxxxx 10xxxxxx     else if(temp < 65536) {       outputStr += String.fromCharCode((temp >> 12) | 224);       outputStr += String.fromCharCode(((temp >> 6) & 63) | 128);       outputStr += String.fromCharCode((temp & 63) | 128);     }     //11110xxx 10xxxxxx 10xxxxxx 10xxxxxx     else {       outputStr += String.fromCharCode((temp >> 18) | 240);       outputStr += String.fromCharCode(((temp >> 12) & 63) | 128);       outputStr += String.fromCharCode(((temp >> 6) & 63) | 128);       outputStr += String.fromCharCode((temp & 63) | 128);     }   }      return outputStr; }

        下面是解碼

        function utf8Decode(inputStr) {   var outputStr = "";   var code1, code2, code3, code4;      for(var i = 0; i < inputStr.length; i++) {     code1 = inputStr.charCodeAt(i);          if(code1 < 128) {       outputStr += String.fromCharCode(code1);     }     else if(code1 < 224) {       code2 = inputStr.charCodeAt(++i);       outputStr += String.fromCharCode(((code1 & 31) << 6) | (code2 & 63));     }     else if(code1 < 240) {       code2 = inputStr.charCodeAt(++i);       code3 = inputStr.charCodeAt(++i);       outputStr += String.fromCharCode(((code1 & 15) << 12) | ((code2 & 63) << 6) | (code3 & 63));     }     else {       code2 = inputStr.charCodeAt(++i);       code3 = inputStr.charCodeAt(++i);       code4 = inputStr.charCodeAt(++i);       outputStr += String.fromCharCode(((code1 & 7) << 18) | ((code2 & 63) << 12) |((code3 & 63) << 6) | (code2 & 63));     }   }      return outputStr; }

        以上!

        相關免費學習推薦:javascript(視頻)

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产午夜亚洲精品理论片不卡 | 97久久精品人妻人人搡人人玩| 国产在线精品一区二区三区不卡 | 人妻少妇精品视中文字幕国语 | 日本午夜精品理论片A级APP发布| 国内精品久久久久影院免费| 亚洲码国产精品高潮在线| 国产99久久久国产精品~~牛 | 国产在线精品一区二区三区不卡 | 91精品啪在线观看国产电影| 91久久婷婷国产综合精品青草| 亚洲午夜福利精品久久| 国产精品无码免费播放| 四虎国产精品永久地址99新强| 国产精品亚洲片夜色在线| 99久久国产综合精品麻豆| 国产精品露脸国语对白| 日韩精品乱码AV一区二区| 亚洲国产一成人久久精品| 永久免费精品影视网站| 亚洲国产综合精品一区在线播放| 久久久精品久久久久特色影视| 国内精品国语自产拍在线观看 | 人妻少妇精品无码专区动漫| 国产在线91精品入口| 国产精品久久久久久久久久免费| 亚洲综合一区二区精品导航| 亚洲欧洲国产精品你懂的| 久久99国产精品二区不卡| 91麻豆精品国产自产在线观看亚洲| 久久Av无码精品人妻系列| 欧洲精品99毛片免费高清观看 | 久久精品无码专区免费 | 午夜三级国产精品理论三级| 无码8090精品久久一区| 亚洲国产一成久久精品国产成人综合| 午夜亚洲av永久无码精品| 一级A毛片免费观看久久精品| 野狼第一精品社区| 久久99精品国产自在现线小黄鸭| 久久香综合精品久久伊人|