默认使用 UTF-8 ,在 PyCharm 中调试会出现这样的错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 25: ordinal not in range (128 )
看了一下,导致问题的是这行:
volumnList=os.popen ('ls /Volumes').readlines ()
但是在 Terminal 中直接用 Python 3 打开没有问题。
如何解决呢?
1
shoaly 2015-09-19 18:14:09 +08:00
volumnList.encode ('utf-8')
volumnList.encode ('gbk') 都试试看吧 |
2
wuhuaji 2015-09-19 18:32:10 +08:00
首先你要确认是不是文件是不是真的是 utf8 编码,在右下角可以看到,这个坑我就碰到了。
如果不是在设置里改编码。 |
3
RqPS6rhmP3Nyn3Tm OP @shoaly 感谢回复,但是方法在我这里尝试后发现没有作用
|
4
RqPS6rhmP3Nyn3Tm OP @wuhuaji 文件的确是 UTF-8 编码,右下角也是这么显示的
|
5
zhaozhiming003 2015-09-19 20:12:25 +08:00
可以用 chardet 看下文件的编码格式是什么,不一定就是 utf-8 , https://pypi.python.org/pypi/chardet
|
6
RqPS6rhmP3Nyn3Tm OP @zhaozhiming003 感谢!发现字符编码是 ASCII
|
7
RqPS6rhmP3Nyn3Tm OP @zhaozhiming003 不对,似乎不是这个原因。显示是 ASCII 似乎只是因为源代码只包含了 ASCII 范围内的字符……
|
8
wsy2220 2015-09-19 21:26:14 +08:00
把这行删掉手动敲一遍试试
|
9
jamesxu 2015-09-19 23:20:09 +08:00 via iPhone
你确定'ls /Volumes'这一句没问题?貌似是这一行第 25 个字符有问题
|
10
RqPS6rhmP3Nyn3Tm OP @jamesxu volumeList = os.popen ('ls /Volumes').readlines ()
应该没错吧? |
11
CBBing 2015-09-20 18:19:02 +08:00
在文件前几行加:
# coding: utf-8 |