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

2016-07-12 08:30:28 +08:00
 jiangguoqing

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

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