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
jiangguoqing
V2EX  ›  Python

加了# -*- coding:utf-8 -*-为什么在 pycharm 还是会报 Non——ascii character no encoding declared

  •  
  •   jiangguoqing · 2016-07-12 08:30:28 +08:00 · 6162 次点击
    这是一个创建于 3064 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚入 Python ,你们帮我看看呗,感谢。 O(∩_∩)O~

    11 条回复    2016-07-16 23:19:46 +08:00
    webdev
        1
    webdev  
       2016-07-12 08:36:25 +08:00 via iPhone
    Py 文件编码必须是 UTF8
    echo1937
        2
    echo1937  
       2016-07-12 08:42:32 +08:00 via iPhone
    建议 py3 ,至少学习阶段能减少很多疑惑,以后用哪个版本随便你。
    jiangguoqing
        3
    jiangguoqing  
    OP
       2016-07-12 08:47:07 +08:00
    哦哦 OK 了,谢谢,刚发现把编码声明放第一行就没问题。应该是编码声明必须放在最前面吧,原来把是 author 放第一行的。
    @webdev
    @echo1937
    dobest
        4
    dobest  
       2016-07-12 09:20:17 +08:00
    @jiangguoqing 根据 pep 263 https://www.python.org/dev/peps/pep-0263/,文件编码的声明必须放在前两行。

    “ To define a source code encoding, a magic comment must be placed into the source files either as first or second line in the file ”
    SlipStupig
        5
    SlipStupig  
       2016-07-12 14:58:40 +08:00
    @webdev 没有任何规定说 python 只能是 UTF8 啊
    julyclyde
        6
    julyclyde  
       2016-07-12 21:15:50 +08:00
    @SlipStupig 你就当有这个规定好了。别的都不是最佳实践
    rubytek
        7
    rubytek  
       2016-07-12 21:25:44 +08:00
    我见过 coding=GBK 的人,求别这样玩。
    SlipStupig
        8
    SlipStupig  
       2016-07-12 21:33:58 +08:00
    @julyclyde
    @webdev python 默认读取文件采用的是内置函数 open, 这个函数的编码是根据当前系统编码来读取的,你们跟我说 python 只能用 utf8 工作,其它编码都不行...
    julyclyde
        9
    julyclyde  
       2016-07-16 16:43:40 +08:00
    @SlipStupig open 的目标一般不是源码文件吧。上面说“只能 UTF-8 ”是指源码文件“应该只”用 UTF-8 ,其它的一切都是不应该出现的,一旦出现就是麻烦
    SlipStupig
        10
    SlipStupig  
       2016-07-16 21:49:37 +08:00
    @julyclyde python 载入源码也是用内置的 open 函数,你具体看一下源码 python 是如何载入脚本的,你用# coding=gb2312 一样可以运行,你不写 coding 声明 python 一样能运行,请问在没写的时候 python 采用的是什么编码?
    julyclyde
        11
    julyclyde  
       2016-07-16 23:19:46 +08:00
    @SlipStupig 载入源码用 open 函数具体是哪部分啊? python 的源码不是 C 写的吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2602 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:06 · PVG 11:06 · LAX 19:06 · JFK 22:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.