楼主:
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