Python 板


LINE

第一次来这里问问题,请各位板友指教! 其实我猜这大概不是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 请大家开始隔空抓药,谢谢! -- 你喜欢下列哪一个学妹? 1. 虽然吉他弹得比学姊好,在乐团里却甘愿只当个副手 2. 拥有夏天一到必然黑化的体质,连同学好友都认不出来 3. 虽然嘴巴很严厉,但只要用甜点就可以收买,尤其喜欢鲷鱼烧 4. 讨厌学姊给她取的奇怪绰号,却给小猫取了同一个名字 5. 极力维持自己严肃的形象,但是一戴上猫耳就会不自觉喵喵叫 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.110.141.102
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Python/M.1412756706.A.390.html
1F:→ uranusjr: 不是 Python 认不得, 是 command prompt 认不得 10/08 16:32
command line interpreter直接输入中文没问题,是读档才有问题
2F:→ elleryq: 你需要codecs模组,请阅读http://tinyurl.com/lsxfad3 10/08 16:33
※ 编辑: wohtp (123.110.141.102), 10/08/2014 16:34:14 等下,我发现问题了...为什麽python会去用cp950(就是big5)解码中文字? 然後我照楼上说的, r = codecs.getreader('utf8')(f) r.read() 照样给我那个cp950不识字的exception。 ※ 编辑: wohtp (123.110.141.102), 10/08/2014 16:52:16
3F:→ os653: 要指定open的参数encoding呀... 10/08 16:43
f = open('test.txt', encoding = 'utf8') 这样就好了。 书上说预设就是utf-8啊!跟说好的不一样(大哭)(滚) ※ 编辑: wohtp (123.110.141.102), 10/08/2014 16:55:26
4F:→ alibuda174: open的encoding会因平台不同而不同 10/08 17:00
现在变成读得进去显示不出来: s = f.read() 这个过去了 print(s) 同一个exception。为什麽这麽爱用cp950! ※ 编辑: wohtp (123.110.141.102), 10/08/2014 17:05:34
5F:→ os653: 别打print(s),打s看结果,还有notepad存的是utf-8-sig 10/08 17:11
有读进去了。直接打s会echo '\ufeff中文测试' 所以我终於懂了,一切还是源自Windows对big5病态的爱 orz 不能print()很麻烦耶,这样要怎麽debug? ※ 编辑: wohtp (123.110.141.102), 10/08/2014 17:19:56
6F:→ alibuda174: print会输出到sys.stdout 而它的encoding可能是cp950 10/08 17:37
7F:→ alibuda174: 可以把sys.stdout的encoding换掉 10/08 17:39
8F:→ alibuda174: 或是把读进来的字串 转换它的encoding 10/08 17:39
9F:→ alibuda174: 或是一开始就把档案储存成cp950的encoding 10/08 17:40
10F:→ os653: 那个\ufeff就是叫你用utf-8-sig,还有这跟Windows没啥关系 10/08 17:56
我整理一下现在的状况: 1. 至少在我这台win8机器上面,open()需要encoding = 'utf8'才能正常 读取/输入unicode 2. 不管是cmd.exe还是windows powershell,用print()显示unicode的问 题千错万错都是windows的错 http://bugs.python.org/issue1602 3. 有workaround,我还没试 https://github.com/Drekin/win-unicode-console (我还不会在Anaconda上面装东西呢 -_-) ※ 编辑: wohtp (123.110.141.102), 10/08/2014 19:01:42
11F:→ os653: 那个...我意思是用encoding='utf-8-sig',你应该就能print 10/08 19:37
12F:→ os653: 如果不用其他国家的语言(或混用coding),理论上都能print 10/08 19:39
感谢楼上 <(_ _)><(_ _)><(_ _)> notepad或notepad++的utf-8编码文件: open('filename', encoding = 'utf-8-sig') 这样读写显示都可以 notepad++的utf-8 without BOM文件: open('filename', encoding = 'utf8') 一样可以读写显示 可是这BOM,果然千错万错还是windows的错! ※ 编辑: wohtp (123.110.141.102), 10/08/2014 20:18:42 ※ 编辑: wohtp (123.110.141.102), 10/08/2014 20:19:20
13F:→ alibuda174: 推os653,thanks. 10/08 22:39
14F:推 ccwang002: 补充一下,如果是英文系统应该是无法正确显示字 10/08 23:54
15F:→ ccwang002: 但它印出的 □ 在其他程式贴上能显示 (powershell) 10/08 23:56
16F:→ zerof: windows command 预设是 950 10/09 17:28







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP