1. 程式人生 > 實用技巧 >JS之BOM程式設計History和location物件

JS之BOM程式設計History和location物件

1 什麼是字元編碼?

人類在與計算機互動時,用的都是人類能讀懂的字元,如中文字元、英文字元、日文字元等毫無疑問,由人類的字元到計算機中的數字,必須經歷一個過程,如下

翻譯的過程必須參照一個特定的標準,該標準稱之為字元編碼表,該表上存放的就是字元與數字一一對應的關係。

字元編碼中的編碼指的是翻譯或者轉換的意思,即將人能理解的字元翻譯成計算機能識別的二進位制數字

ASCII表(美國)

1、只有英文字元、數字與表的一一對應關係
2、一個英文字元對應1Bytes,1Bytes=8bit,8bit最多包含256個數字,可以對應256個字元,足夠表示所有英文字元
	0000 0000
    1111 1111

  

GBK表(中國)

GBK表的特點:
1、只有中文字元、英文字元、數字與表的 一一對應關係
2、一個英文字元對應1Bytes
   一箇中文字元對應2Bytes   
   補充說明:
   1Bytes=8bit,8bit最多包含256個數字,可以對應256個字元,足夠表示所有英文字元
   2Bytes=16bit,16bit最多包含65536個數字,可以對應65536個字元,足夠表示所有中文字元

unicode (萬國碼)

1、所有的字元都用2bytes
2、佔用儲存空間
3、IO次數增加,程式執行速度緩慢

很多地方或老的系統、應用軟體仍會採用各種各樣傳統的編碼,這是歷史遺留問題。此處需要強調:軟體是存放於硬碟的,而執行軟體是要將軟體載入到記憶體的,面對硬碟中存放的各種傳統編碼的軟體,想讓我們的計算機能夠將它們全都正常執行而不出現亂碼,記憶體中必須有一種相容萬國的編碼,並且該編碼需要與其他編碼有相對應的對映/轉換關係,這就是unicode的第二大特點產生的緣由。

utf-8

1、utf-8只與unicode有對應關係
2、所有的英文字元用1個bytes表示,所有的中文字元用3個bytes表示

(記憶體)unicode二進位制字元>>>編碼>>>(硬碟)utf-8二進位制字元
   
   (硬碟)utf-8二進位制字元>>>解碼>>>(記憶體)unicode二進位制字元

保證不亂碼的核心:用什麼編碼存,就用什麼編碼取

強調:我們能控制的只是存到硬碟上的編碼

  • python3直譯器用預設utf-8編碼
  • python2直譯器用預設ascii編碼

檔案頭的作用:

#coding:utf-8:是告訴python直譯器用我指定的字元編碼