作者:
wohtp (會喵喵叫的大叔)
2014-10-08 16:24:59第一次來這裡問問題,請各位板友指教!
其實我猜這大概不是python本身的問題...
環境:Windows 8.1 64-bit,非unicode編碼是繁中
Python 3.4.1 (Anaconda 2.1.0 64-bit)
文字檔編輯器試過notepad和notepad++,都有記得指定utf-8編碼
如果我在interpreter下面直接打
s = '中文測試'
這樣一切都很好,python 3直接認得unicode,我要 s[0] 它就給我 '中',等等。
但是如果我另外存一個 test.txt,內容一樣只有 中文測試 四個字,然後做
f = open('test.txt')
s = f.read()
只會吃到這個exception:
UnicodeDecodeError: 'cp950' codec can't decode byte 0xe6 in position 6:
illegal multibyte sequence
請大家開始隔空抓藥,謝謝!
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2014-10-08 16:32:00不是 Python 認不得, 是 command prompt 認不得
作者: elleryq 2014-10-08 16:33:00
作者:
os653 2014-10-08 16:43:00要指定open的參數encoding呀...
作者:
os653 2014-10-08 17:11:00別打print(s),打s看結果,還有notepad存的是utf-8-sig
print會輸出到sys.stdout 而它的encoding可能是cp950可以把sys.stdout的encoding換掉或是把讀進來的字串 轉換它的encoding或是一開始就把檔案儲存成cp950的encoding
作者:
os653 2014-10-08 17:56:00那個\ufeff就是叫你用utf-8-sig,還有這跟Windows沒啥關係那個...我意思是用encoding='utf-8-sig',你應該就能print如果不用其他國家的語言(或混用coding),理論上都能print
補充一下,如果是英文系統應該是無法正確顯示字但它印出的 □ 在其他程式貼上能顯示 (powershell)
作者:
zerof (貓橘毛發呆雕像)
2014-10-09 17:28:00windows command 預設是 950