字元編碼 進製

2022-04-05 18:32:41 字數 2686 閱讀 8232

英文本母、數字、字元  →  十進位制  →   二進位制

英文本母、數字、字元  →  ascii碼  →  01010101(每八位代表乙個字元)每一位0或1所佔的空間為位元(bit),這是計算機最小的表示單位。ascii碼只能表示 255 個符號

8bit = 1bytes(位元組),這是計算機最小的儲存單位,縮寫表示為1b。1kb = 1024b,1mb = 1024kb ...

中文  →  十進位制  →  二進位制

中文  →  gb2312  →  01010101   僅能儲存7000+個圖形字元,其中漢字有6700+個

中文  →  gbk1.0 、gbk18030   →  01010101  相容gb2312

中文、英文本母、數字、字元  →   unicode  →   0101010101010101(規定最少用16位表示,即2個位元組)

中文、英文本母、數字、字元  →   utf-8(相容unicode)  →   01010101...(長度可變,ascii碼中的內容用1個位元組表示、歐洲字元用2個位元組表示、東亞用3個位元組表示)

windows 預設編碼是gbk,mac os/linux 預設編碼是utf-8

python2.x預設編碼為ascii碼,python3預設編碼是utf-8

檔案開頭宣告直譯器和編碼

#!/usr/bin/env python 

# -*- coding: utf-8 -*-

unicod起到了兩個作用:1.直接支援全球所有語言;2.unicode包含了跟全球所有國家編碼的對映關係。

但是使用unicode表示乙個字元,太浪費空間,為了解決儲存和網路傳輸的問題,就出現了utf。

utf-8: 使用1、2、3、4個位元組表示所有字元;優先使用1個字元、無法滿足則使增加乙個位元組,最多4個位元組。英文佔1個位元組、歐洲語系佔2個、東亞佔3個,其它及特殊字元佔4個

utf-16: 使用2、4個位元組表示所有字元;優先使用2個位元組,否則使用4個位元組表示。

utf-32: 使用4個位元組表示所有字元;

即utf 是為unicode編碼 設計 的一種 在儲存 和傳輸時節省空間的編碼方案

python 2.x中

msg = "我愛北京天安門"

msg_gb2312 = msg.decode("utf-8").encode("gb2312")

gb2312_to_gbk = msg_gb2312.decode("gbk").encode("gbk")

print(msg)

print(msg_gb2312)

print(gb2312_to_gbk)

在python3.x中

#-*-coding:gb2312 -*-   #這個也可以去掉

__author__ = 'alex li'

import sys

print(sys.getdefaultencoding())

msg = "我愛北京天安門"

#msg_gb2312 = msg.decode("utf-8").encode("gb2312")

msg_gb2312 = msg.encode("gb2312") #預設就是unicode,不用再decode,喜大普奔

gb2312_to_unicode = msg_gb2312.decode("gb2312")

gb2312_to_utf8 = msg_gb2312.decode("gb2312").encode("utf-8")

print(msg)

print(msg_gb2312)

print(gb2312_to_unicode)

print(gb2312_to_utf8)

#-*-coding:gbk-*-

#檔案以gbk編碼

import sys

print(sys.getdefaultencoding())

s='你好'#還是預設utf-8

print(s)

print(s.encode('gbk'))

print(s.encode('utf-8').decode('utf-8').encode('gb2312'))

print(s.encode('utf-8').decode('utf-8').encode('gb2312').decode('gb2312'))

>>>

utf-8

你好b'\xc4\xe3\xba\xc3'

b'\xc4\xe3\xba\xc3'

你好

二進位制:01010101

八進位制:012345678(以0o開頭)

十進位制:0123456789

十六進製制(字首0x、字尾h):0123456789abcdef(以0x開頭)

十進位制轉八進位制: oct(a) ,十進位制轉十六進製制: hex(a)

字元編碼 進製轉換

字串的gb2312編碼 gbk編碼 ascii碼的十六進製制字串,gb2312是對ascii碼的中文擴充套件 public string strtohex string mstr 返回處理後的十六進製制字串 字串的gb2312編碼 gbk編碼 轉換為普遍字串 public string hextos...

字元編碼和二進位制

python直譯器在載入 py 檔案中的 時,會對內容進行編碼 預設ascill python3現在編碼是unicode.ascii american standard code for information interchange,美國標準資訊交換 是基於拉丁字母的一套電腦編碼系統,主要用於顯示...

python基礎2 進製 字元編碼和檔案處理

一 進製 1 二進位制 定義二進位制資料是用0和1兩個數碼來表示的數。它的基數為2,進製規則是 逢二進一 轉換方式 二進位制轉換為十進位制 把二進位制數按權展開 相加即得十進位制數。十進位制轉換為二進位制 十進位制數除2取餘法,即十進位制數除2,餘數為權位上的數,得到的商值繼續除2,依此步驟繼續向下...