免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
字符編碼

字符編碼表就是一張字符與數(shù)字的對應(yīng)關(guān)系的表

內(nèi)存

上 ------------------->翻譯 ------------------>01011010

上 <-------------------- 翻譯<-----------------01011010

ASCII表:

1、只支持英文字符串

2、采用 8 位二進(jìn)制數(shù)對應(yīng)一個英文字符串

GBK 表:

1、支持英文字符、中文字符

2、采用 8 位(8bit=1Bytes)二進(jìn)制數(shù)對應(yīng)一個英文字符串

采用 16 位(16bit = 2Bytes)二進(jìn)制數(shù)對應(yīng)一個中文字符串

unicode(內(nèi)存中統(tǒng)一使用 unicode):

1、兼容萬國字符,與萬國字符都有對應(yīng)關(guān)系

2、采用 16 位(16bit=2Bytes)二進(jìn)制對應(yīng)一個字符串

個別生僻會采用 4Bytes 、8Bytes

人類輸入的字符------------->unicode格式數(shù)字(內(nèi)存中)<------------->GBK格式二進(jìn)制(硬盤)

人類輸入的字符------------->unicode格式數(shù)字(內(nèi)存中)<------------->Shift_JIS格式二進(jìn)制(硬盤)

注:GBK 與 Shift_JIS字符編碼都可以轉(zhuǎn)為 unicode,但是它們兩之間不能通過 unicode互轉(zhuǎn)

UTF-8:

1、英文采用1 個 Bytes

2、中文采用 3 個 Bytes

window :默認(rèn)采用 GBK

mac :默認(rèn)采用 utf-8

linux:默認(rèn)采用 utf-8

python 文件的執(zhí)行過程:

1、先將 python 解釋器啟動

2、調(diào)用系統(tǒng)操作,將文本文件內(nèi)容由硬盤讀入內(nèi)存

3、解釋器解釋并執(zhí)行剛剛讀入內(nèi)存的文本內(nèi)容,識別相關(guān)語法。

python 解釋器:

python 2:默認(rèn)的是 ascii 碼

python 3:默認(rèn)的是 utf-8 碼

為了能夠在 python2 解釋器讀入文本文件不亂碼,可以在文本文件開頭指定編碼格式,這樣 python2 解釋器將內(nèi)容讀入內(nèi)存時就會知道 文本內(nèi)容使用的編碼格式。

保證了運(yùn)行 python 程序前兩個階段不亂碼的核心是指定編碼格式,即用什么編碼存入硬盤的:

在 文件首行寫入包含 # 號在內(nèi)的以下內(nèi)容:

#coding:當(dāng)初寫入硬盤時采用的編碼格式    #告訴 python 解釋器,文本內(nèi)容的編碼格式

解釋器會先用默認(rèn)的編碼方式讀取文件的首行內(nèi)容,由于首行是純英文組成,而任何編碼方式都可以識別英文字符。

例:

在 python2 中

# coding:utf-8x = '上' # x的值為untf-8格式的二進(jìn)制  python解釋器執(zhí)行到這一步時,會新建一塊內(nèi)存空間來存入 "上" 值。print(x) # 打印操作是將x的值,即utf-8格式的二進(jìn)制交給終端,當(dāng)終端收到后發(fā)現(xiàn)并不是unicode(只有unicode才與字符有對應(yīng)關(guān)系),所以終端會執(zhí)行操作:utf-8二進(jìn)制---解碼(decode)-->unicode格式的二進(jìn)制,解碼的過程中使用的程序終端會采用自己默認(rèn)的編碼格式,而在pycharm的終端默認(rèn)編碼為utf-8、windows下的cmd終端的默認(rèn)編碼為gbk,所以該打印操作在pycharm中顯示正常,而在windows下的cmd中則亂碼# 在windows下的cmd中運(yùn)行效果如下C:\Users\Administrator>python2 E:\aaa.py涓

python2:str 有兩種類型:str 和 unicode

str類型:

     x = ‘上’    #字符串會按照文件頭指定的編碼格式存入變量值的內(nèi)存空間

unicode 類型:

    #coding:utf-8  x = u‘上’   #強(qiáng)調(diào)存成 unicode 等同于 x= '上'.decode(utf-8)

保證python2 的 str 類型不亂碼:

#coding:utf-8  x = u'上' # #強(qiáng)調(diào)存成 unicode 等同于 x= '上'.decode(utf-8)

python3:str 類型默認(rèn)直接存為 unicode 格式,無論如何都不會亂碼

結(jié)論:

1、內(nèi)存中固定使用的是 unicode、這是不能改變的,我們可以改變的是存入硬盤的格式

        英文 漢字-》unicode-》gbk      英文 日文-》unicode-》shift-jis        萬國字符》-unicode-》utf-8

2、文本文件存取亂碼問題

1)存亂了:

例:如果用戶輸入的內(nèi)容中包含中文和日文字符,如果單純以shift_JIS存,日文可以正常寫入硬盤,而由于中文字符在shift_jis中沒有找到對應(yīng)關(guān)系而導(dǎo)致存亂了

解決方法是:將文本文件編碼格式設(shè)置成支持文件內(nèi)字符串的格式

2)讀亂了:

例:如果硬盤中的數(shù)據(jù)是shift_JIS格式存儲的,采GBK格式讀入內(nèi)存就讀亂了

解決方法是:文件以什么編碼格式存如硬盤,就應(yīng)該以什么編碼格式讀入內(nèi)存。

總結(jié):

1、保證存的時候不亂:在由內(nèi)存寫入硬盤時,必須將編碼格式設(shè)置為支持所輸入字符的編碼格式

2、保證讀的時候不亂:在由硬盤讀入內(nèi)存是,必須采用與寫入硬盤時相同的編碼格式

二 編碼與解碼

編碼:

由字符轉(zhuǎn)換成內(nèi)存中 unicode,以及由 unicode轉(zhuǎn)換成其他編碼(存在硬盤里)的過程,都稱為編碼encode

字符-------------encode-------------》unicode---------encode---------》GBK、utf-8、Shift_JIS

解碼:

由內(nèi)存中的 unicode 轉(zhuǎn)換成字符,以及由其他編碼(存在硬盤里)轉(zhuǎn)換成 unicode 的過程,都被稱為解碼 decode

(utf-8、Shift_JIS、GBK--------decode----------》unicode-----------decode---------------》字符

補(bǔ)充:

瀏覽網(wǎng)頁的時候,服務(wù)器會把動態(tài)生成的 unicode 內(nèi)容轉(zhuǎn)為 UTF-8 再傳輸?shù)綖g覽器

如果服務(wù)端 encode 的編碼格式是utf-8,客戶端內(nèi)存中收到的也是 utf-8 編碼的結(jié)果

來源:https://www.icode9.com/content-4-657401.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【2020Python修煉記】Python語法入門-字符編碼
python編碼問題大終結(jié)
UTF-8和UTF-16使用對比
【Python3】Python的字符編碼
[Python]Python中文全攻略
Python異常UnicodeEncodeError: ''gbk'' codec can''t encode character ''
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服