[Python] 在Windows環境下輸出中文為亂碼的問題

---
開發環境:python 3.4
作業系統:windows7 x64
---

問題描述:


在windows用小黑窗執行python時,
要如何在print的時候顯示出正確的中文字呢?
encode成utf8還是顯示hex碼

解決辦法:



python的print似乎會抓取終端使用的編碼進行輸出
如果是使用linux,比如說ubuntu 12版以上的terminal
就已經是使用UTF-8編碼,所以輸出沒有問題

而在windows的dos終端
如果是使用台灣地區
那開啟dos時的編碼就是CP950
而在python進行print的時候
實際上是把字串轉換成目前的編碼在輸出
所以當輸出的是繁體中文的unicode時沒有問題
但是輸出cp950沒有支援的碼,比如簡體中文
就會出現:UnicodeEncodeError: 'cp950' codec can't encode character .....

在DOS輸入"chcp *" 可以改變DOS的編碼
*是編碼,可以參考這個頁面:
http://en.wikipedia.org/wiki/Code_page
UTF-8的編碼是65001

改變完之後,印出簡中的unicode會變成亂碼
是因為DOS的字型設定跑掉了、或是預設字型不支援(預設是點陣字型)
這個時候可以對DOS移動條"右鍵->內容"、切換TAB(字型)
選擇文字大小、字型選擇"Consolas"或"Lucida Console"
這樣就可以正常顯示了


TAG: unicode, utf-8, Windows, 亂碼

留言

這個網誌中的熱門文章

[Javascript] 利用Google Calendar api 存取 Google 行事曆

[滑鼠] 羅技G402 換微動