編碼介紹
在人類社會,不同國家有不同的標準語法,簡體漢語、繁體漢語、美式英語、英式英語等.....
但是機器保存數(shù)據(jù)是以一種特殊的方式來保存,讀取的時候也是以同樣的方式來解讀。
在Python3當中,默認處理中文的方式叫UTF-8!緦Ρ瘸鰝Γ篣TF-8支持中文,Python2默認格式是ASCII,不支持中文】
同樣的一個中文詞語,例如:"中國",經過UFT-8方法轉存到硬盤中,比如保存成了"110",再通過UFT-8方法讀取,也是顯示"中國";通過另一種方法轉存到硬盤中,"中國"則會保存成"101",然后通過UTF-8讀取,肯定不會顯示成"中國",也許就是一個亂七八糟的亂碼"燙燙燙燙燙燙燙燙燙";
雖然上面的110、119、燙燙燙是亂填的,下面示例代碼中有具體值,總之一個:想要顯示正常,讀取數(shù)據(jù)時格式,必須和保存數(shù)據(jù)時使用的一致。
閑扯幾句——Python2 字符串設計上的一些缺陷:
使用ASCII 碼作為默認編碼方式,對中文處理很不友好。
把字符串牽強地分為 unicode 和 str 兩種類型,誤導開發(fā)者
以上提及的兩個問題,Python3都很好的解決了
首先,Python3 把系統(tǒng)默認編碼設置為 UTF-8
然后,文本字符和二進制數(shù)據(jù)區(qū)分得更清晰,分別用 str 和 bytes 表示。
填寫下面表單即可預約申請免費試聽java課程!害怕學不會?助教全程陪讀,隨時解惑!擔心就業(yè)?一地學習,可全國推薦就業(yè)!
代碼示例:
import sys, locale
s = "小甲"
print(s)
print(type(s))
print(sys.getdefaultencoding())
print(locale.getdefaultlocale())
with open("utf1","w",encoding = "utf-8") as f:
f.write(s)
with open("gbk1","w",encoding = "gbk") as f:
f.write(s)
with open("jis1","w",encoding = "shift-jis") as f:
f.write(s)
代碼很簡單,學過Python的人應該都能看懂是啥意思~~
我們看一下運行結果:
小甲
utf-8
('en_US', 'UTF-8')
正如大家所想, 就是將“小甲”原樣打印出來, 再把“小甲”存到3個文件中。
(shift-jis是日文編碼格式)
這里解釋一下打印出來的兩個“utf-8”是什么意思:
上面的 utf-8 指:系統(tǒng)默認編碼
注: 不要把系統(tǒng)以為是操作系統(tǒng),這里可以理解成python3的編譯器本身
下面的 utf-8 指:本地默認編碼
注: 這個才是操作系統(tǒng)的編碼。(在Windows運行會變成gbk)
初級會計職稱中級會計職稱經濟師注冊會計師證券從業(yè)銀行從業(yè)會計實操統(tǒng)計師審計師高級會計師基金從業(yè)資格稅務師資產評估師國際內審師ACCA/CAT價格鑒證師統(tǒng)計資格從業(yè)
一級建造師二級建造師消防工程師造價工程師土建職稱房地產經紀人公路檢測工程師建筑八大員注冊建筑師二級造價師監(jiān)理工程師咨詢工程師房地產估價師 城鄉(xiāng)規(guī)劃師結構工程師巖土工程師安全工程師設備監(jiān)理師環(huán)境影響評價土地登記代理公路造價師公路監(jiān)理師化工工程師暖通工程師給排水工程師計量工程師
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護士資格證初級護師主管護師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實踐技能內科主治醫(yī)師外科主治醫(yī)師中醫(yī)內科主治兒科主治醫(yī)師婦產科醫(yī)師西藥士/師中藥士/師臨床檢驗技師臨床醫(yī)學理論中醫(yī)理論