黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Python基礎之編碼(中文編碼)

系統 2047 0

首先,介紹一下編碼類型:
Python基礎之編碼(中文編碼)_第1張圖片
然后,再看一下編碼類型的轉換過程:
Python基礎之編碼(中文編碼)_第2張圖片
python程序是在內存中運行,因此應該處理的是Unicode類型的字符串,文件或終端中的各種編碼方式,可以理解為py3中的Bytes類型。
Unicode只能在內存中使用
Bytes是在文件存儲和網絡數據傳輸中使用

記住我們的程序要處理的是Unicode類型

下面看一下py2和py3中字符串的類型:
py2:
在這里插入圖片描述
py3:
在這里插入圖片描述
看起來好像一樣,都是str類型,其實對應的編碼方式是不一樣的,請看下圖:
Python基礎之編碼(中文編碼)_第3張圖片
這樣是否看出區別了呢?在py3中,str就是Unicode類型,所以py3中不會有中文編碼的各種問題,聲明一個str類型的中文字符串,程序即可直接進行處理;但是在py2中呢,str是對應的gbk、utf-8等類型,相當于編碼后的Unicode,程序要處理的是Unicode類型,而你的中文字符串是gbk類型(隨便選一個舉例),這樣程序自然就報錯了。

py3:
s = “abc” #等價于py2的unicode類型,例如s=u"中國"
type(s) —str類型—>> unicode
s1=b"abc" —bytes類型—(gbk,utf-8…)

s.encode(“utf-8”)—>bytes類型
s.encode(“utf-8”).decode(“utf-8”)—>unicode類型

py2:
s = “中國” #等價于 py3的bytes類型
type(s) —str類型—>不是unicode,而是類似py3里面的bytes對象
s.decode(“utf-8”)—>unicode
s.decode(“utf-8”).encode(“utf-8”)類型—>str類型

這樣看是否就很清晰了呢?也就是說你在py3中聲明一個str類型變量,這個變量支持的操作是編碼操作,即s.encode(“utf-8”);
而你在py2中聲明一個str類型變量,這個變量支持的操作是解碼操作,即s.decode(“utf-8”)

那么,有中文的情況下應該怎么使用才不會報錯呢?
py2:
1 文件要存為utf-8
2 文件第一行聲明為(下面這幾種都可以,隨便選一種):
#encoding=utf-8
#coding=utf-8
#coding:utf-8
# coding:UTF-8
3 所有的中文前面加u,表示unicode

py3:
1 文件要存為utf-8
2 聲明可以不加,加上也沒問題
3 中文前面不用加u,加了也沒事

常用終端的編碼類型:
CMD是gbk編碼
記事本默認ANSI編碼(gbk)

注:
1.讀文件 讀到的都是Unicode
2.編碼和解碼要用相同的字符集(用什么編碼就用什么解碼)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論