V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
RqPS6rhmP3Nyn3Tm
V2EX  ›  Python

PyCharm 编码问题?

  •  
  •   RqPS6rhmP3Nyn3Tm · 2015-09-19 17:34:39 +08:00 · 3838 次点击
    这是一个创建于 3149 天前的主题,其中的信息可能已经有所发展或是发生改变。

    默认使用 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 打开没有问题。
    如何解决呢?

    11 条回复    2015-09-20 18:19:02 +08:00
    shoaly
        1
    shoaly  
       2015-09-19 18:14:09 +08:00
    volumnList.encode ('utf-8')

    volumnList.encode ('gbk')
    都试试看吧
    wuhuaji
        2
    wuhuaji  
       2015-09-19 18:32:10 +08:00
    首先你要确认是不是文件是不是真的是 utf8 编码,在右下角可以看到,这个坑我就碰到了。

    如果不是在设置里改编码。
    RqPS6rhmP3Nyn3Tm
        3
    RqPS6rhmP3Nyn3Tm  
    OP
       2015-09-19 19:40:30 +08:00 via iPad
    @shoaly 感谢回复,但是方法在我这里尝试后发现没有作用
    RqPS6rhmP3Nyn3Tm
        4
    RqPS6rhmP3Nyn3Tm  
    OP
       2015-09-19 19:41:02 +08:00 via iPad
    @wuhuaji 文件的确是 UTF-8 编码,右下角也是这么显示的
    zhaozhiming003
        5
    zhaozhiming003  
       2015-09-19 20:12:25 +08:00
    可以用 chardet 看下文件的编码格式是什么,不一定就是 utf-8 , https://pypi.python.org/pypi/chardet
    RqPS6rhmP3Nyn3Tm
        6
    RqPS6rhmP3Nyn3Tm  
    OP
       2015-09-19 21:19:54 +08:00
    @zhaozhiming003 感谢!发现字符编码是 ASCII
    RqPS6rhmP3Nyn3Tm
        7
    RqPS6rhmP3Nyn3Tm  
    OP
       2015-09-19 21:23:23 +08:00
    @zhaozhiming003 不对,似乎不是这个原因。显示是 ASCII 似乎只是因为源代码只包含了 ASCII 范围内的字符……
    wsy2220
        8
    wsy2220  
       2015-09-19 21:26:14 +08:00
    把这行删掉手动敲一遍试试
    jamesxu
        9
    jamesxu  
       2015-09-19 23:20:09 +08:00 via iPhone
    你确定'ls /Volumes'这一句没问题?貌似是这一行第 25 个字符有问题
    RqPS6rhmP3Nyn3Tm
        10
    RqPS6rhmP3Nyn3Tm  
    OP
       2015-09-20 00:19:54 +08:00
    @jamesxu volumeList = os.popen ('ls /Volumes').readlines ()
    应该没错吧?
    CBBing
        11
    CBBing  
       2015-09-20 18:19:02 +08:00
    在文件前几行加:
    # coding: utf-8
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2331 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:11 · PVG 11:11 · LAX 20:11 · JFK 23:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.