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

2016 年 7 月 12 日
 jiangguoqing

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

6689 次点击
所在节点    Python
11 条回复
webdev
2016 年 7 月 12 日
Py 文件编码必须是 UTF8
echo1937
2016 年 7 月 12 日
建议 py3 ,至少学习阶段能减少很多疑惑,以后用哪个版本随便你。
jiangguoqing
2016 年 7 月 12 日
哦哦 OK 了,谢谢,刚发现把编码声明放第一行就没问题。应该是编码声明必须放在最前面吧,原来把是 author 放第一行的。
@webdev
@echo1937
dobest
2016 年 7 月 12 日
@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
2016 年 7 月 12 日
@webdev 没有任何规定说 python 只能是 UTF8 啊
julyclyde
2016 年 7 月 12 日
@SlipStupig 你就当有这个规定好了。别的都不是最佳实践
rubytek
2016 年 7 月 12 日
我见过 coding=GBK 的人,求别这样玩。
SlipStupig
2016 年 7 月 12 日
@julyclyde
@webdev python 默认读取文件采用的是内置函数 open, 这个函数的编码是根据当前系统编码来读取的,你们跟我说 python 只能用 utf8 工作,其它编码都不行...
julyclyde
2016 年 7 月 16 日
@SlipStupig open 的目标一般不是源码文件吧。上面说“只能 UTF-8 ”是指源码文件“应该只”用 UTF-8 ,其它的一切都是不应该出现的,一旦出现就是麻烦
SlipStupig
2016 年 7 月 16 日
@julyclyde python 载入源码也是用内置的 open 函数,你具体看一下源码 python 是如何载入脚本的,你用# coding=gb2312 一样可以运行,你不写 coding 声明 python 一样能运行,请问在没写的时候 python 采用的是什么编码?
julyclyde
2016 年 7 月 16 日
@SlipStupig 载入源码用 open 函数具体是哪部分啊? python 的源码不是 C 写的吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/291852

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX