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 類型。