JavaScript中进制和字符编码问题
Posted engeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript中进制和字符编码问题相关的知识,希望对你有一定的参考价值。
1、进制:
javascript中允许使用字面量的形式声明不同进制的数字:
var a = 0b10; // 2 声明一个二进制 var b = 010; // 8 八进制,严格模式下会报错 var c = 10; // 10 十进制 var d = 0x10 // 16 十六进制
其中八进制字面量在严格模式下会报错,数字超过范围,将会忽略前导 0 ,解析为十进制数字
var f = 08 ; //8
2、进制之间转换:
调用toString方法,可以在进制之间进行转换。
d.toString(2); //"10000" d.toString(8); //"20" d.toString(10);//"16"
3、字符编码
同样JavaScript允许使用字面量的形式声明一个字符串;
var a = ‘a‘; //"a" 字面量声明; var b = ‘\x61‘;//"a" 使用ASCII码的格式声明一个字符串;\x后面跟的是ASCII 16进制的格式。 var c = ‘\u0061‘ // "a" 使用unicode编码声明的字符串;都是16进制格式。
4、字符编码转换
静态方法:
String.fromCodePoint()
,返回使用指定的代码点序列创建的字符串;
String.fromCodePoint(97) //"a" 十进制的码点,一串 Unicode 编码位置 String.fromCodePoint(0x61) //"a" 十六进制编码位置
String.fromCharCode()
,返回由指定的UTF-16代码单元序列创建的字符串;
String.fromCodePoint(97);// "a" String.fromCodePoint(0x61); // "a"
两者区别在于fromCharCode
参数是
UTF-16代码单元的数字。 范围介于0到65535(0xFFFF)之间。 大于0xFFFF的数字将被截断。 不进行有效性检查。
实例方法:
String.prototype.charCodeAt()
方法返回0到65535之间的整数,表示给定索引处的UTF-16代码单元;
‘a‘.charCodeAt(0) //97
方法返回 一个 Unicode 编码点值的非负整数。String.prototype.
codePointAt()
‘a‘.codePointAt(0);//97 ‘中‘.codePointAt(0);//20013
以上是关于JavaScript中进制和字符编码问题的主要内容,如果未能解决你的问题,请参考以下文章
javascript NodeJS:如何将base64编码的字符串解码回二进制?