• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > JavaScript实现UTF-8编解码

JavaScript实现UTF-8编解码

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了JavaScript,UTF-8编解码等相关知识,希望对您有所帮助

JavaScript实现UTF-8编解码


首先简单介绍一下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-00007F0xxxxxxx000080-0007FF110xxxxx 10xxxxxx000800-00FFFF1110xxxx 10xxxxxx 10xxxxxx010000-10FFFF11110xxx10xxxxxx10xxxxxx10xxxxxx


以下是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;}

以上!



分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 一起来聊聊JavaScript函数柯里化
  • 在javascript中,NaN是什么类型?
  • javascript调试之console.table()
  • Javascript中常见的内置对象有哪些
  • Javascript怎么实现字符串替换星号
  • 解决JavaScript中数组排序sort不发生改变
  • Javascript怎么实现红绿灯
  • 两行 Javascript 代码生成 UUID的方法
  • Javascript怎么实现四位随机验证码
  • javascript怎么判断是否为null

相关文章

  • 2022-04-29Illustrator绘制水晶质感苹果标志
  • 2022-04-29聊聊TP在app接口开发过程中的安全验证问题
  • 2022-04-29Thinkphp5分页函数paginate中的each()传入自定义参数
  • 2022-04-29DedeCMS 5.6升级至DedeCMS5.7SP1后类目和发布人不显示
  • 2022-04-29Python查询工信部网站备案信息
  • 2022-04-29判断是否为jquery对象使用什么运算符
  • 2022-04-29织梦怎么去掉index.html
  • 2022-04-29如何解决thinkphp new self()报错问题
  • 2022-04-29符合W3C标准的网页等于做了百分之五十的SEO工作
  • 2022-04-29CSS实现领积分动画效果

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • Illustrator绘制炫丽时尚的花朵教程
    • WordPress自动设置标签Tag自动内链无插件实现方法
    • 详解MySQL 联合查询 (IN和EXISTS区别)
    • 百度编辑器无法插入视频、iframe怎么办
    • PHP开发支付宝PC扫码支付/支付宝当面付开发流程
    • Linux下使用NTFS文件系统(Linux挂载NTFS数据盘)
    • 带你了解Angular中的组件通讯和依赖注入
    • 介绍Laravel中的where高级使用方法
    • Photoshop制作梦幻光点效果的艺术字教程
    • dedecms后台打开慢解决方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有