python編碼模式檢測和解碼

2021-08-18 15:31:34 字數 1635 閱讀 4684

標準ascii碼使用7位二進位制數表示大寫或小寫字母,數字0到9標點符號以及在美式英語中使用的特殊控制字元。

在標準ascii碼中,最高位(b7)用作奇偶校驗位,所謂奇偶校驗,是指在**傳送過程中用來檢驗是否出現錯誤的一種方法,一般分寄校驗和偶校驗兩種。奇校驗規定:正確的**乙個位元組中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的**乙個位元組中1的個數必須是偶數,若非偶數,則在最高位b7添1。

後128個稱為擴充套件ascii碼。許多基於x86的系統都支援使用擴充套件(或「高」)ascii。擴充套件ascii 碼允許將每個字元的第8 位用於確定附加的128 個特殊符號字元、外來語字母和圖形符號。

常見的ascii碼大小:

換行lf為0x0a,回車cr為0x0d,空格為0x20,'0'為0x30,『a』為0x41,'a'為0x61

查詢ascii技巧,方便查詢ascii碼對應的字元:新建乙個文字文件,按住alt+要查詢的碼值(注意,這裡是十進位制),鬆開即可顯示出對應字元。例如:按住alt+97,則會顯示出'a'。

擴充套件ascii碼是從128-255的字元。

注意:unicode只是乙個符號集,它規定了符號的二進位制**,卻沒有規定二進位制**如何儲存。

所稱的unicode編碼指的是ucs編碼方式,即直接存入符號的unicode二進位制**。

utf-8是網際網路上使用最廣的一種unicode的實現方式。

utf-8是一種變長的編碼方式,它使用1-4個位元組表示乙個符號,根據不同的符號選擇不同長度的位元組表示。

utf-8的編碼規則很簡單,只有二條:

1)對於單位元組的符號,位元組的第一位設為0,後面7位為這個符號的unicode碼。因此對於英語字母,utf-8編碼和ascii碼是相同的。

2)對於n位元組的符號(n>1),第乙個位元組的前n位都設為1,第n+1位設為0,後面位元組的前兩位一律設為10。剩下的沒有提及的二進位制位,全部為這個符號的unicode碼。

unicode符號範圍(16進製制)

utf-8編碼方式(2進製)

0000 0000-0000 007f

0******x

0000 0080-0000 07ff

110***xx 10******

0000 0800-0000 ffff

1110***x 10****** 10******

0001 0000-0010 ffff

11110*** 10****** 10****** 10******

跟據上表,解讀utf-8編碼非常簡單。如果乙個位元組的第一位是0,則這個位元組單獨就是乙個字元;如果第一位是1,則連續有多少個1,就表示當前字元占用多少個位元組。

unicode與utf-8的轉換方式:

在windows系統最簡單的方式是採用記事本開啟文件然後選擇編碼方式另存為。

python中:

檢測特定頁面的編碼格式

import chardet

import urllib.request

testdata = urllib.request.urlopen('').read()

print(chardet.detect(testdata))

檢測系統的編碼格式

import sys

print(sys.getdefaultencoding())

PYTHON編碼和解碼

從第一天接觸python就對解碼和編碼的問題很困惑,最近在學習網路資料爬蟲,又遇到了一系列的解碼和編碼問題,處理中文編碼問題真的好麻煩,這次真的需要好好填坑了。詳細內容下面的文章 python字串的編碼與解碼 encode與decode 字串在python內部的表示是unicode編碼,因此,在做編...

Python的編碼和解碼

春節剛過,今天正式上班。首先在這裡給大家拜個晚年,祝大家在新年裡萬事如意,新春快樂。今天我們來說乙個比較老的話題,關於python的編碼和解碼的問題。首先簡單的來說,編碼就是把人類熟悉的語言轉化成計算機可以識別的語言,即0 1狀態位。而解碼則剛好相反,就是把計算機 能夠識別的 0 1 轉化 類熟悉的...

python 編碼解碼

一種編碼想要轉成另一種編碼,需要先解碼成萬國碼 unicode,然後再從unicode轉成其他編碼。例如gbk格式想要轉成utf 8,需要先按照 gbk 的格式 decode 成 unicode,再從 unicode 格式 encode 成utf 8 python3預設使用utf 8編碼,故不用宣告...