I’m a heavy Python user. Python is the perfect language for me for a fast and easy way to script some useful and helpful tools. Something which I came across a longer time ago: Python has some problems with umlauts and other special characters. Even though the special character support has become way much better in Python 3, Python 2 still have problems here and expects some tweaks within your scripts. This article is going to show you how to exactly tweak your Python 2 scripts to get them working with umlauts and special characters.
What is it all about?
In Python 3 you can use special characters such as the German umlauts all the time. You will not run into any issue. But if you have to use Python 2, you will run into serious problems. For example, the following code will run with Python 3 but will produce errors with Python 2:
# This are german umlauts äöü print("foo")
While we will get the expected result with Python 3, Python 2 will gives you the following error:
SyntaxError: Non-ASCII character '\xc3' in file foo.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
This error indicates, that Python 2 was unable to encode the umlauts which are written down in the script file. But there is a solution available …
The solution is rather simple. Just put this into the first line of your Python script file and you will be read to go again:
# -*- coding: utf-8 -*-
For the example above the code will now look like this:
# -*- coding: utf-8 -*- # This are german umlauts äöü print("foo")
Save and rerun your script. Python 2 will now be able to work with it as well. The line which you have added is telling the Python 2 interpreter that the code contains characters, which are utf-8 based. Besides the german umlauts, there are a lot more special characters like in the spanish or french language which needs this line in order to get accepted by Python 2.
You want to learn more about Python? Then I recommend you the Python Crash Course book by Eric Matthes. This book gives you a lot of code examples, guides and tips about how to script in Python 2 and 3.