python第一篇:Python 字符串編

Python字符串編碼python

字符串編碼的前世此生網絡

1. 一個字節由8個bit組成,因此1個字節能表示的最大數爲255;編碼

2. 計算機是美國人發明的,因此一個字節能夠表示全部的字符了,因此ASCII就成爲美國人的標準編碼;spa

3.可是ASCII編碼處理漢字是明顯不夠的,中文不止255個漢字,因此中國製定GB2312編碼,用兩個字節表示一個漢字,GB2312還把ASCII包含進去了,同理,日文。韓文等等上百個國家爲了解決問題都發展了一套字節的編碼,標準就愈來愈多,若是出現多種語言混合現實就必定會亂碼;code

4.這時候出現了Unicode編碼,將全部的標準統一到了一套編碼裏面;blog

5.那ASCII編碼和Unicode編碼之間是如何進行轉換的?下面是具體的轉換方法:內存

  5.1 字母A用ASCII編碼表示的十進制是65,二進制即爲0100 0001utf-8

  5.2 漢字「中」已經超出了ASCII編碼的範圍,用Unicode編碼十進制是20013 二進制是0100 1110 0010 1101ci

  5.3 A字母用Unicode編碼時只須要在前面補上0  即爲0000 0000 0100 0001開發

6.亂碼問題解決了,可是同時又出現了一個新的問題,若是所有是英文字母的話,Unicode編碼比ASCII編碼多消耗一倍的內存,同時網絡傳輸的時候也多消耗一倍的帶寬;

7.因此這個時候出現了長度可變化的utf-8的編碼。

 

字符與字節

1byte = 8bit
1KB = 1024 bytes
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB

ASCII編碼: 一個英文字母佔據一個字節的空間,一箇中文字母佔據兩個字節的空間;

utf-8編碼: 一個英文字符等於一個字節,一箇中文(含繁體)等於三個字節。中文標點佔據三個字節,英文標點佔據一個字節;

Unicode編碼: 一個英文等於兩個字節,一箇中文(含繁體)等於兩個字節。中文標點佔據兩個字節,英文標點佔據兩個字節。

 

Unicode編碼爲GB2312編碼  utf-8編碼 ASCII等編碼的一個父級編碼,那這些子編碼之間子在須要相互轉換的時候就須要藉助父級編碼Unicode。子編碼是能夠直接轉換爲父級編碼,而後父級編碼轉換爲另外一種類型的子編碼。

 

Python2和Python3字符編碼存在的問題

獲取默認編碼格式:

 

>>> import sys
>>> sys.getdefaultencoding()

咱們發如今python2中默認的編碼格式是 'ascii' 編碼,在python3中默認的編碼格式爲utf-8

第一步:在終端輸入python進入python2的開發環境

第二步:s = "中國"   # 獲取s的值拿到  '\xe4\xb8\xad\xe5\x9b\xbd'  說明此時的ASCII編碼沒法識別漢字

 

Python2和Python3字符編碼問題的解決方案

import sys
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding: reload(sys) sys.setdefaultencoding(defaultencoding)
相關文章
相關標籤/搜索