python編碼格式

2021-09-24 13:24:57 字數 1924 閱讀 7041

我們在寫**的時候經常會遇到亂碼等問題,其實就是因為編碼格式不正確,那我們現在來簡單看一下關於編碼的相關知識

計算機儲存資料是用0、1儲存的,為了儲存英文本元等,所以出現了乙個ascii編碼表,通過這個表就是把對應的英文轉換對應為相應的0、1資料儲存到計算機,但是英文只有26個字母,中文有6萬多漢字,ascii編碼不夠,所以根據需要就出現了unicode、utf-8等編碼,實際可以理解為它們把全球的文字編碼對應到計算機的0、1來儲存識別。

ascii 碼使用指定的 7 位或 8 位二進位制數組合來表示 128 或 256 種可能的字元。標準 ascii 碼也叫基礎ascii碼,使用 7 位二進位制數來表示所有的大寫和小寫字母,數字 0 到 9、標點符號, 以及在美式英語中使用的特殊控制字元。其中:

unicode是為了解決傳統的字元編碼的侷限而產生的。對世界上大部分的文字系統進行了編碼、整理,使電腦可以更方便的處理和展示文字。unicode採用16位編碼空間,每個字元佔2個位元組。unicode的實現方式稱為unicode轉換格式

unicode碼擴充套件自ascii字符集。在嚴格的ascii中,每個字元用7位元表示,或者電腦上普遍使用的每字元有8位元寬。而unicode使用全16位元字符集。這使得unicode能夠表示世界上所有的書寫語言中可能用於電腦通訊的字元、象形文本和其他符號。

不同的編碼方式會造成亂碼問題,unicode將世界上所有符號都納入其中。每乙個符號都給予乙個編碼,這樣就就解決了亂碼問題。unicode現在的規模可以容納100多萬個符號,每個符號的編碼都不一樣,例如u+4e0a表示上,u+4e0b表示下,具體的符號對應表可以檢視:

utf全稱(unicode transformation format),所以它是一種針對前面提到的unicode的編碼格式,常見的格式就是 utf-8,還有 utf-16, utf-32。

utf-8 其中的 8 表示的是 8 bit,即unicode中每8位表示乙個字元,utf-16 和 utf-32 類似,因為unicode最多才21位,32位大於21位,所以 utf-32 的格式就可以表示所有字元對應的unicode碼了,但是呢,32位也就是4位元組,讓每個字元都占用4位元組太費空間了,所以出現了utf-8和utf-16。

utf-8 編碼規則如下:

unicodebitutf-8byte

0x0000 - 0x007f

0 - 7

0*** ***x

10x0080 - 0x07ff

8 - 11

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

20x0800 - 0xffff

12 - 16

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

30x1 0000 - 0x1f ffff

17 - 21

1111 0*** 10xx ***x 10xx ***x 10xx ***x

4python中預設的編碼格式是 ascii 格式,在沒修改編碼格式時無法正確列印漢字,所以在讀取中文時會報錯。解決方法為在檔案的開頭加入# -*- coding: utf-8 -*-或者#coding=utf-8就行了。

我們要記住寫python程式的時候一般使用utf-8編碼格式來儲存編碼格式,網頁裡面同樣的也宣告utf-8即可,utf-8是中文、英文、日文等全球文字都可以使用的編碼格式,通用性很強。

在pycharm 中設定編碼格式的步驟:file --> setting --> file encodings

Python 設定編碼格式

python在安裝時,預設的編碼是ascii,當程式中出現非ascii編碼時,python的處理常常會報這樣的錯unicodedecodeerror ascii codec can t decode byte 0x?in position 1 ordinal not in range 128 pyt...

python編碼格式問題

今天由於用python寫指令碼時,讀取txt檔案出現問題,查了半天,由此出這貼 ansi編碼 即當前作業系統使用的編碼,可在cmd下用chcp命令檢視,活動頁936為 gbk編碼,簡體中文 utf 8編碼 讀取 有bom的utf 8編碼檔案 open方法傳入引數 encoding utf 8 sig...

python檢視網頁編碼格式

我們在進行網頁的獲取時,通常要檢視該網頁的編碼時,可以通過python去獲取該網頁的編碼格式。from urllib import request import chardet if name main response request.urlopen html response.read char...