Windows終端輸出中文問題:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中文"
print(s1)
上面的代碼指定了字符編碼為 UTF-8
,但是在 windows
上的 Dos命令行窗口
執行這個腳本時,輸出的不是中文,而是亂碼。
C:\Users\Administrator>python D:/1.py
涓枃
這是因為我們輸出的是 UTF-8
的格式的,但是 Dos命令行窗口
是以 GBK
的格式去顯示的,所以輸出的中文是亂碼。
為了能夠輸出中文,可以把
UTF-8
編碼轉換成 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)
運行結果:
C:\Users\Administrator>python D:/1.py
中文
還有一種方法:
可以把 UTF-8
解碼成 unicode
,然后 windows
的終端會自動將 unicode
轉換成 GBK
。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中文"
s1_unicode = s1.decode("utf-8")
# 輸出時會轉換成 "gbk" 編碼
print(s1_unicode)
運行結果:
C:\Users\Administrator>python D:/1.py
中文
注:上面使用的Python版本是 Python 2.7.2
。
C:\Users\Administrator>python -V
Python 2.7.2
在Python3.5之后,就對上面的整個過程做了一個優化,如果是 UTF-8
的編碼可以直接將它轉成 GBK
的編碼,不用先主動轉換成 unicode
了,而是Python內部給你進行轉換。
注:Python3中移除了 unicode
類型。