Python擴(kuò)展之編碼轉(zhuǎn)換

Windows終端輸出中文問題:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中文"
print(s1)

上面的代碼指定了字符編碼為 UTF-8 ,但是在 windows 上的 Dos命令行窗口 執(zhí)行這個腳本時,輸出的不是中文,而是亂碼。

C:\Users\Administrator>python D:/1.py
涓枃

這是因為我們輸出的是 UTF-8 的格式的,但是 Dos命令行窗口 是以 GBK 的格式去顯示的,所以輸出的中文是亂碼。


為了能夠輸出中文,可以把 UTF-8 編碼轉(zhuǎn)換成 GBK 編碼。


過程:先把 "utf-8" 解碼成 unicode ,在把 unicode 編碼成 GBK 。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中文"

# 先通過 "decode" 將 "utf-8" 解碼成 "unicode" , 解碼需要指定原來是什么編碼.
s2_unicode = s1.decode("utf-8")

# 在通過 "encode" 將 "unicode" 編碼成 "gbk" , 編碼需要指定要變成什么編碼.
s3_gbk = s2_unicode.encode("gbk")
print(s3_gbk)

運(yùn)行結(jié)果:

C:\Users\Administrator>python D:/1.py
中文

還有一種方法:

可以把 UTF-8 解碼成 unicode ,然后 windows 的終端會自動將 unicode 轉(zhuǎn)換成 GBK 。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中文"
s1_unicode = s1.decode("utf-8")

# 輸出時會轉(zhuǎn)換成 "gbk" 編碼
print(s1_unicode)

運(yùn)行結(jié)果:

C:\Users\Administrator>python D:/1.py
中文

注:上面使用的Python版本是 Python 2.7.2

C:\Users\Administrator>python -V
Python 2.7.2

在Python3.5之后,就對上面的整個過程做了一個優(yōu)化,如果是 UTF-8 的編碼可以直接將它轉(zhuǎn)成 GBK 的編碼,不用先主動轉(zhuǎn)換成 unicode 了,而是Python內(nèi)部給你進(jìn)行轉(zhuǎn)換。

注:Python3中移除了 unicode 類型。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容