Aar*_*ron 1 python encoding utf-8 pycharm
我有一个简单的脚本。
# -*- encoding : utf-8 -*-
episode_title = "????????????)".decode('utf-8')
print episode_title.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)
但这在我的cmd控制台上不起作用(Win8 PC,编码为big5)。
SyntaxError: Non-ASCII character '\xe3' in file G:\test.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Run Code Online (Sandbox Code Playgroud)
虽然我将代码页更改为utf-8
chcp 65001
Run Code Online (Sandbox Code Playgroud)
它仍然不起作用。
但是当我在IPython笔记本中运行它时,它就可以工作了!(也可以在PyCharm和IPython Qt控制台中使用)
????????????)
Run Code Online (Sandbox Code Playgroud)
但是当我在Ubuntu中运行它时:
aaron@ubuntu:~$ python test.py
File "test.py", line 2
SyntaxError: Non-ASCII character '\xe3' in file test.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是它无法在Ubuntu中运行。
有人可以解释这个谜吗?
为什么要在IPython Notebook或PyCharm中运行?但不是在CMD或Ubuntu Terminal中?
您的评论不符合PEP的要求,因为您在单词encoding和冒号之间留了一个空格:
# -*- encoding : utf-8 -*-
# ^
Run Code Online (Sandbox Code Playgroud)
该PEP用于匹配声明确切的正则表达式:
coding[:=]\s*([-\w.]+)
Run Code Online (Sandbox Code Playgroud)
因此,Python会查找文字文本,coding后跟冒号:或等号=,然后是零个或多个空格字符,然后是编解码器。
您需要做的就是删除您拥有的多余空间:
# -*- encoding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
仅当Python必须从磁盘读取源代码时,该注释才适用。在交互式解释器中,您可以通过平台的常规本地化支持,使用也声明编码的控制台或终端输入代码。IPython和PyCharm属于这一类别;您会使用该信息正确解码键盘输入,并且不需要声明。
小智 5
只需更换
# -*- encoding : utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
和
# encoding: utf-8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10731 次 |
| 最近记录: |