Εργασία με κωδικοποίηση UTF-8 στην πηγή της Python

Σκεφτείτε:

$ cat bla.py 
u = unicode('d…')
s = u.encode('utf-8')
print s
$ python bla.py 
  File "bla.py", line 1
SyntaxError: Non-ASCII character '\xe2' in file bla.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

Πώς μπορώ να δηλώσω συμβολοσειρές UTF-8 στον πηγαίο κώδικα;

Στην επικεφαλίδα της πηγής μπορείτε να δηλώσετε:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
....

Περιγράφεται στο PEP 0263:

Τότε μπορείτε να χρησιμοποιήσετε UTF-8 σε συμβολοσειρές:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

u = 'idzie wąż wąską dróżką'
uu = u.decode('utf8')
s = uu.encode('cp1250')
print(s)

Αυτή η δήλωση δεν χρειάζεται στην Python 3, καθώς η UTF-8 είναι η προεπιλεγμένη κωδικοποίηση πηγής (βλέπε PEP 3120).

Επιπλέον, μπορεί να αξίζει να επαληθεύσετε ότι ο επεξεργαστής κειμένου σας κωδικοποιεί σωστά τον κώδικά σας σε UTF-8. Διαφορετικά, μπορεί να έχετε αόρατους χαρακτήρες που δεν ερμηνεύονται ως UTF-8.

Σχόλια (15)

Μην ξεχάσετε να ελέγξετε αν ο επεξεργαστής κειμένου σας κωδικοποιεί σωστά τον κώδικά σας σε UTF-8.

Διαφορετικά, μπορεί να έχετε αόρατους χαρακτήρες που δεν ερμηνεύονται ως UTF-8.

Σχόλια (7)