九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

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

開通VIP
字符編碼

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

內(nèi)存

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

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

ASCII表:

1、只支持英文字符串

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

GBK 表:

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

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

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

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

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

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

個(gè)別生僻會(huì)采用 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 個(gè) Bytes

2、中文采用 3 個(gè) Bytes

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

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

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

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

1、先將 python 解釋器啟動(dòng)

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

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

python 解釋器:

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

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

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

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

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

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

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

例:

在 python2 中

# coding:utf-8x = '上' # x的值為untf-8格式的二進(jìn)制  python解釋器執(zhí)行到這一步時(shí),會(huì)新建一塊內(nèi)存空間來(lái)存入 "上" 值。print(x) # 打印操作是將x的值,即utf-8格式的二進(jìn)制交給終端,當(dāng)終端收到后發(fā)現(xiàn)并不是unicode(只有unicode才與字符有對(duì)應(yīng)關(guān)系),所以終端會(huì)執(zhí)行操作:utf-8二進(jìn)制---解碼(decode)-->unicode格式的二進(jìn)制,解碼的過程中使用的程序終端會(huì)采用自己默認(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 = ‘上’    #字符串會(huì)按照文件頭指定的編碼格式存入變量值的內(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 格式,無(wú)論如何都不會(huì)亂碼

結(jié)論:

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

        英文 漢字-》unicode-》gbk      英文 日文-》unicode-》shift-jis        萬(wàn)國(guó)字符》-unicode-》utf-8

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

1)存亂了:

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

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

2)讀亂了:

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

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

總結(jié):

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

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

二 編碼與解碼

編碼:

由字符轉(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)頁(yè)的時(shí)候,服務(wù)器會(huì)把動(dòng)態(tài)生成的 unicode 內(nèi)容轉(zhuǎn)為 UTF-8 再傳輸?shù)綖g覽器

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

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

聯(lián)系客服