Python之Win字符編碼詳解

2018-06-08 17:17 更新

Win下的dos窗口輸出中文

Python2.7默認(rèn)字符編碼是ascii格式,即使指定字符編碼為UTF-8也未必能夠輸出中文,測(cè)試如下:


1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">#_*_coding:utf-8_*_# 定義一個(gè)變量內(nèi)容為中文,字符集為UTF-8temp = "中文"<br># 輸出變量temp的內(nèi)容print(temp)<br></span>

用win下的dos窗口執(zhí)行這個(gè)腳本,看看輸出出來的是否為中文

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">C:\Users\anshe>python F:\Python_code\sublime\Day02\print.py涓枃        #輸出出來的是亂碼<br></span>

這是為什么呢?其實(shí)是因?yàn)閐os窗口的字符編碼是GBK的(如下圖),規(guī)定輸出的字符集必須是GBK的,所以輸出出來的中文即為亂碼。

注意我是用的是Python2.7.11

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">C:\Users\anshe>python -VPython 2.7.11<br></span>

使用Pycharm或者sublimePython IDE輸出中文流程

流程中文說明:
Py Scripts頭部指定編碼格式為UTF-8 —> IDE把默認(rèn)的Ascii格式編碼成UTF-8 —-> IDE終端輸出中文

  • 用sublime IDE輸出

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;"># _*_ coding:utf-8 _*_# 定義一個(gè)變量內(nèi)容為中文,字符集為UTF-8temp = "中文"<br># 輸出變量temp的內(nèi)容print(temp)<br></span>

輸出的內(nèi)容:

既然這樣,python的編碼能夠把ascii編碼還換成UTF-8那么肯定也就可以轉(zhuǎn)換成GBK編碼,流程如下:

代碼如下:

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;"># _*_ coding:utf-8 _*_# 定義一個(gè)變量內(nèi)容為中文,字符集為UTF-8temp = "中文"<br># 解碼,需要指定原來是什么編碼temp_unicode = temp.decode("utf-8")<br># 編碼,需要指定要轉(zhuǎn)換成什么編碼temp_gbk = temp_unicode.encode("gbk")<br># 輸出轉(zhuǎn)換成的gbk編碼print(temp_gbk)<br></span>

Dos窗口執(zhí)行測(cè)試:

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">C:\Users\anshe>python F:\Python_code\sublime\Day02\print.py中文<br></span>

另外一種方法:
代碼:

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;"># _*_ coding:utf-8 _*_# 定義一個(gè)變量內(nèi)容為中文,字符集為UTF-8temp = "中文"<br># 解碼,需要指定原來是什么編碼temp_unicode = temp.decode("utf-8")<br># 輸出轉(zhuǎn)換成的gbk編碼print(temp_unicode)# Windows終端需要GBK,DOS自動(dòng)轉(zhuǎn)換成GBK<br></span>
1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">C:\Users\anshe>python F:\Python_code\sublime\Day02\print.py中文<br></span>

大概流程也就像下面的圖一樣

python3移除了unicode字符集的類型,默認(rèn)使用UTF-8,還有一種也可以在dos終端輸出中文的方法,代碼如下:

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;"># _*_ coding:utf-8 _*_print(u"中文")<br></span>

DOs窗口輸出的就是中文了,雖然我也不知道是什么意思

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">C:\Users\anshe>python f:\Python_code\sublime\Day02\print.py中文<br></span>


本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)