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

Midnighter opened this Issue Dec 15, 2011 · 6 comments

4 participants


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 on line 11, but no encoding declared; see 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.

IPython member

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

IPython member

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 :)


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)
IPython 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.

IPython member

@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.

@bfroehle bfroehle added a commit to bfroehle/ipython that referenced this issue Dec 15, 2011
@bfroehle bfroehle Add encoding header to Python files downloaded from notebooks.
Closes gh-1156.
@takluyver takluyver added a commit to takluyver/ipython that referenced this issue Dec 15, 2011
@takluyver takluyver Add coding header when notebook exported to .py file.
Closes gh-1156
IPython member

@bfroehle : snap ;-)

@fperez fperez closed this in 688cc09 Dec 15, 2011
@mattvonrocketstein mattvonrocketstein pushed a commit to mattvonrocketstein/ipython that referenced this issue Nov 3, 2014
@takluyver takluyver Add coding header when notebook exported to .py file.
Closes gh-1156
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment