Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Notebooks downloaded as Python files require a header stating the encoding #1156

Closed
Midnighter opened this issue Dec 15, 2011 · 6 comments · Fixed by #1158
Closed

Notebooks downloaded as Python files require a header stating the encoding #1156

Midnighter opened this issue Dec 15, 2011 · 6 comments · Fixed by #1158

Comments

@Midnighter
Copy link

The following problem occurred: I have a notebook with a mardown cell that contains non-ASCII characters. When I try to run the file I get the following error:

SyntaxError: Non-ASCII character '\xc3' in file bla.py on line 11, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

even though the offending character is commented.

Putting something like # -*- coding: utf-8 -*- in the first or second line of the file solves the problem, I think this should be standard procedure for exporting the notebook.

@takluyver
Copy link
Member

Yes, we already add this when using the %save magic, we should do it for the notebook as well.

@fperez
Copy link
Member

fperez commented Dec 15, 2011

Actually I'd say this is a blocker on 0.12, b/c this simple line missing will make it much harder to use the nb. Plus, it's really easy to fix :)

@bfroehle
Copy link
Contributor

This is also going to require some additional code on the read side as Python's implementation of JSON doesn't support comments as far as I can tell.

In [7]: import json

In [8]: print A
# -*- coding: utf-8 -*-
{"testing": "comments"}

In [9]: json.loads(A)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)

@takluyver
Copy link
Member

We don't want to do it with the JSON - that's assumed to be UTF-8 encoded. This is about making .py files from the notebooks.

@fperez
Copy link
Member

fperez commented Dec 15, 2011

@bfroehle, believe it or not, it's the JSON spec that doesn't support comments, period. Fortunately in this case, the issue is about what we wrtie to disk on .py files, as @takluyver points out, so we don't need to worry about JSON for this issue.

@takluyver
Copy link
Member

@bfroehle : snap ;-)

@fperez fperez closed this as completed in 688cc09 Dec 15, 2011
mattvonrocketstein pushed a commit to mattvonrocketstein/ipython that referenced this issue Nov 3, 2014
mattvonrocketstein pushed a commit to mattvonrocketstein/ipython that referenced this issue Nov 3, 2014
Add coding header when notebook exported to .py file.

Closes ipythongh-1156, also strips the encoding declaration out when we load a .py file.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants