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

String.prototype.codePointAt() 方法返回 一個 Unicode 編碼點值的非負整數。

'a'.codePointAt(0);//97
'中'.codePointAt(0);//20013

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章