学习使用JavaScript实现UTF-8编解码


本文摘自PHP中文网,作者coldplay.xixi,侵删。

1

2

3

4

首先简单介绍一下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-00007F0xxxxxxx
000080-0007FF110xxxxx 10xxxxxx
000800-00FFFF1110xxxx 10xxxxxx 10xxxxxx
010000-10FFFF11110xxx10xxxxxx10xxxxxx10xxxxxx

以下是js实现代码,首先是编码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

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;

}

下面是解码

阅读剩余部分

相关阅读 >>

javascript怎么累加

一起来聊聊jquery、javascript与js三者间的区别

javascript高阶函数的用法介绍

javascript语法是什么

web应用中富交互的撤销与前进操作的实现方法介绍(代码)

javascript如何判断是否数字

vue框架是什么

javascript中如何替换字符串?3种方法介绍

javascript控制台console对象的方法有哪些

javascript怎么设置select选中

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...