国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python字符編碼與函數的基本使用方法

2020-02-16 10:20:49
字體:
來源:轉載
供稿:網友

一、Python2中的字符存在的解碼編碼問題

如果是現在正在用Python2的人應該都知道存在字符編碼問題,就舉一個最簡單的例子吧:Python2是無法在命令行直接打印中文的,當然他也是不會報錯的,頂多是一堆你看不懂的亂碼。如果想在直接顯示中文,我們是可以在Python2文件頭部申明字符編碼的格式。如下圖

這里 #-*-coding:utf-8 -*- 是用來申明下面的代碼是用什么編碼來解釋;

1.1.Python2中的解碼和編碼:

在編碼和解碼的世界中,我們得需要找一個大家都知道的文字。也可以這么理解。我是一個中國人現在和一個日本人溝通,我肯定是無法理解他說的是什么,他同樣也無法理解,但是這樣就沒有辦法了嗎?或許我們需要一個國際的語言——英語。這樣來自不同國家的人也可以進行溝通了(雖然我知道 are you ok 0-0)。在編碼中也是一樣,gbk和utf-8都不知道對方的格式是什么吊意思。所以如果要上gbk讀懂utf-8的編碼就得將utf-8 decode成 Unicode,而Unicode有知道gkb,這里需要將Unicode在encode成gbk就行了

#-*- coding:utf-8 -*-msg = "中國"print msg#解碼在編碼的過程,encoding是申明用申明這段代碼是什么編碼gbk_str = msg.decode(encoding='utf-8').encode(encoding='gbk')print gbk_str#其實兩種輸出的結果是一樣的

在Python2中默認是使用gbk來解釋IDE中的代碼的,所以無法直接在Python命令行中直接輸入中文,所以我們才會使用 #-*-coding:utf-8 -*-來申明頭部,我們到底需要使用什么語言來解釋下面代碼。細心的人肯定是發現了一個問題,申明頭部只是使用utf-8來解釋下面的話,按理說命令行中雖然不報錯,但是應該也是亂碼才是,這里為啥會直接輸出中文呢畢竟DOS命令行中默認支持的是gbk格式的字符代碼呀?這里就涉及到另外的一個概念了。Python到內存解釋器里面,默認是用的Unicode,文件加載到內存后自動解碼成Unicode,而Unicode是外國碼,自然也就可以翻譯來自utf-8的編碼,也可以翻譯成gbk的編碼了。顧可以顯示中文了。

PS:這里我們得出一個結論:python2 中解碼動作是必須的,但是編碼可以不用,因為內存就是Unicode

1.2、Python3中字符編碼的問題:

額,這還有什么可以說的呢?Python3默認就是使用utf-8解釋代碼的。也就是行首自帶 #-*-coding:utf-8 -*-(GBM),所以也就不存在解碼的問題。但是我在這里提上一嘴(其實就是怕自己以后也忘了,嘿嘿),如果我們將utf-8的字符編碼的格式給編碼成gbk。這里會輸出bytes格式的東西。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西昌市| 沧源| 江门市| 新蔡县| 古田县| 河北省| 佛学| 永定县| 青龙| 分宜县| 承德县| 桂阳县| 周至县| 昭苏县| 宁武县| 金坛市| 巴东县| 六枝特区| 改则县| 上高县| 昌吉市| 石棉县| 庆元县| 元阳县| 彭山县| 虹口区| 瑞金市| 广丰县| 宁陕县| 临泽县| 永济市| 西城区| 斗六市| 兴隆县| 高雄县| 舞阳县| 佛坪县| 滦平县| 扎赉特旗| 吉木乃县| 兰溪市|