Työskentely UTF-8-koodauksen kanssa Python-lähteessä

Harkitse:

$ 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

Miten voin ilmoittaa UTF-8-merkkijonoja lähdekoodissa?

Lähdeotsikossa voit ilmoittaa:

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

Se on kuvattu standardissa PEP 0263:

Sitten voit käyttää UTF-8:a merkkijonoissa:

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

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

Tätä ilmoitusta ei tarvita Python 3:ssa, koska UTF-8 on lähdekoodauksen oletuskoodaus (katso PEP 3120).

Lisäksi voi olla syytä tarkistaa, että tekstieditori koodaa koodin oikein UTF-8:ksi. Muuten sinulla voi olla näkymättömiä merkkejä, joita ei tulkita UTF-8:ksi.

Kommentit (15)

Älä unohda tarkistaa, että tekstinkäsittelyohjelmasi koodaa koodisi oikein UTF-8:ksi.

Muuten sinulla voi olla näkymättömiä merkkejä, joita ei tulkita UTF-8:ksi.

Kommentit (7)