作用:python3.x里默認的str是(py2.x里的)unicode, bytes是(py2.x)的str, b”“前綴代表的就是bytes
python2.x里, b前綴沒什么具體意義, 只是為了兼容python3.x的這種寫法
https://www.cnblogs.com/single-boy/articles/7562534.html
https://blog.csdn.net/sinat_40292249/article/details/96431295
http://blog.sciencenet.cn/blog-3428464-1247188.html
https://www.jianshu.com/p/19c74e76ee0a
https://blog.csdn.net/weixin_42989523/article/details/81873874
在看實際代碼的例子前,我們來聊聊,python3 執(zhí)行代碼的過程
解釋器找到代碼文件,把代碼字符串按文件頭定義的編碼加載到內(nèi)存,轉(zhuǎn)成unicode
把代碼字符串按照語法規(guī)則進行解釋,
所有的變量字符都會以unicode編碼聲明
so ,一切都很美好,到這里,我們關(guān)于編碼的學(xué)習(xí)按說就可以結(jié)束了。
但是,如生活一樣,美好的表面下,總是隱藏著不盡如人意,上面的utf-8編碼之所以能在windows gbk的終端下顯示正常,是因為到了內(nèi)存里python解釋器把utf-8轉(zhuǎn)成了unicode , 但是這只是python3, 并不是所有的編程語言在內(nèi)存里默認編碼都是unicode,比如 萬惡的python2 就不是, 它的默認編碼是ASCII,想寫中文,就必須聲明文件頭的coding為gbk or utf-8, 聲明之后,python2解釋器僅以文件頭聲明的編碼去解釋你的代碼,加載到內(nèi)存后,并不會主動幫你轉(zhuǎn)為unicode,也就是說,你的文件編碼是utf-8,加載到內(nèi)存里,你的變量字符串就也是utf-8, 這意味著什么你知道么?。。。意味著,你以utf-8編碼的文件,在windows是亂碼。
記住下圖規(guī)則
聯(lián)系客服