2.編碼
資料型別有:int bool str list tuple dict set
# int ---> bool
i = 100
print(bool(i)) # true # 非零即true
i1 = 0
print(bool(i1)) # false 零即false
# bool ---> int
t = true
print(int(t)) # 1 true --> 1
t = false
print(int(t)) # 0 false --> 0
# int ---> str
i1 = 100
print(str(i1)) # '100'
# str ---> int # 全部由數字組成的字串才可以轉化成數字
s1 = '90'
print(int(s1)) # 90
# str ---> bool
s1 = '太白'
s2 = ''
print(bool(s1)) # true 非空即true
print(bool(s2)) # false
# bool ---> str
t1 = true
print(str(true)) # 'true'
# str ---> list
s1 = 'alex 太白 武大'
print(s1.split()) # ['alex', '太白', '武大']
# list ---> str # 前提 list 裡面所有的元素必須是字串型別才可以
l1 = ['alex', '太白', '武大']
print(' '.join(l1)) # 'alex 太白 武大'
print("#".join(l1) # "alex#太白#武大"
# list ---> set
s1 = [1, 2, 3]
print(set(s1)) #亂序的元組
# set ---> list
set1 =
print(list(set1)) # [1, 2, 3]
# str ---> bytes
s1 = '太白'
print(s1.encode('utf-8')) # b'\xe5\xa4\xaa\xe7\x99\xbd'
# bytes ---> str
b = b'\xe5\xa4\xaa\xe7\x99\xbd'
print(b.decode('utf-8')) # '太白'
所有資料都可以轉化成bool值
『』,0,(),{},set(),none 的bool值都為false
按儲存空間的占用分(從低到高)數字字串
集合:無序,即無序存索引相關資訊
元組:有序,需要存索引相關資訊,不可變
列表:有序,需要存索引相關資訊,可變,需要處理資料的增刪改
字典:有序,需要存key與value對映的相關資訊,可變,需要處理資料的增刪改
按存值個數區分
標量/原子型別:數字,字串
容器型別:列表,元組,字典
按可變不可變區分
可變:列表,字典
不可變:數字,字串,元組,布林值
按訪問順序區分
直接訪問:數字
順序訪問(序列型別):字串,列表,元組
key值訪問(對映型別):字典
ascll碼:包含英文本母,數字,特殊字元與01010101對應關係
a 01000001 乙個字元乙個位元組表示
gbk:只包含本國文字(以及英文本母,數字,特殊字元)與0101010對應關係
a 01000001 ascii碼中的字元:乙個字元乙個位元組表示。
中 01001001 01000010 中文:乙個字元兩個位元組表示。
unicode:包含全世界所有的文字與二進位制0101001的對應關係。
a 01000001 01000010 01000011 00000001
b 01000001 01000010 01100011 00000001
中 01001001 01000010 01100011 00000001
utf-8:包含全世界所有的文字與二進位制0101001的對應關係(最少用8位乙個位元組表示乙個字元)。
a 01000001 ascii碼中的字元:乙個字元乙個位元組表示。
to 01000001 01000010 (歐洲文字:葡萄牙,西班牙等)乙個字元兩個位元組表示。
中 01001001 01000010 01100011 亞洲文字;乙個字元三個位元組表示。
1.在計算機記憶體中,統一使用unicode編碼,當需要將資料儲存到硬碟或者需要網路傳輸的時候,就轉換為非unicode編碼比如:utf-8編碼
舉個例子:用檔案編輯器(word,wps,等)編輯檔案的時候,從檔案將你的資料(此時你的資料是非unicode(可能是utf-8,也可能是gbk,這個編碼取決於你的編輯器設定))字元被轉換為unicode字元讀到記憶體裡,進行相應的編輯,編輯完成後,儲存的時候再把unicode轉換為非unicode(utf-8,gbk 等)儲存到檔案。
圖例:
2.不同編碼之間,不能直接互相識別
比如你的乙個資料:『老鐵沒毛病』是以utf-8的編碼方式編碼並傳送給乙個朋友,那麼你傳送的肯定是通過utf-8的編碼轉化成的二進位制01010101,那麼你的朋友接收到你發的這個資料,他如果想檢視這個資料必須將01010101轉化成漢字,才可以檢視,那麼此時那也必須通過utf-8編碼反轉回去,如果要是通過gbk編碼反轉,那麼這個內容可能會出現亂碼或者報錯。
前提條件:python3x
主要用途:資料的訪問或者檔案的傳輸
在計算機記憶體中,統一使用unicode編碼,當需要將資料儲存到硬碟或者需要網路傳輸的時候,就轉換為非unicode編碼比如:utf-8編碼
解釋圖例:
這個bytes型別與字串型別,幾乎一模一樣,可以看看bytes型別的原始碼,bytes型別可以用的操作方法與str相差無幾
str與bytes型別的區別於聯絡:
# encode稱作編碼:將 str 轉化成 bytes型別
s1 = '中國'
b1 = s1.encode('utf-8') # 轉化成utf-8的bytes型別
print(s1) # 中國
print(b1) # b'\xe4\xb8\xad\xe5\x9b\xbd'
s1 = '中國'
b1 = s1.encode('gbk') # 轉化成gbk的bytes型別
print(s1) # 中國
print(b1) # b'\xd6\xd0\xb9\xfa'
2.1.2bytes>>>str# decode稱作解碼, 將 bytes 轉化成 str型別
b1 = b'\xe4\xb8\xad\xe5\x9b\xbd'
s1 = b1.decode('utf-8')
print(s1) # 中國
2.1.3 gbk>>>utf-8
因為不同編碼之間不能直接互相識別(間接好了)
s1 = "中國"
b1 = s1.encode("gbk")
s1 = b1.decode("utf-8")
# s1 = s1.encode("gbk").decode("utf-8")
mysql資料庫轉換編碼
在遷移資料庫的時候,以前的資料庫用的是latin1 也不知道當初建資料庫的人怎麼想的 出現的亂碼,因為我建所有的庫用的都是utf8編碼,所以我對匯出的資料庫進行了轉碼。我只用了兩步就成功對以前的資料庫進行了轉碼 1 將表中的latin1全部更成utf8,如 engine myisam default...
關於轉換編碼問題
今天在對接的時候遇到的問題,對方curl呼叫我的介面,給我傳送的資料中包含乙個中文字串,由於他那邊是gbk編碼,我這裡是utf 8,所以介面得到的post資料一直為空。在確定是因為編碼問題之後,也採取了iconv和加header的方法,但是不知為何都沒有生效,post資料仍然為空。最後解決了問題,是...
mysql 轉換編碼方式
vim etc my.cnf 在 mysqld 標籤下加上三行 default character set utf8 character set server utf8 在 mysql 標籤下加上一行 default character set utf8 在 mysql.server 標籤下加上一行...