Arbeiten mit UTF-8-Codierung in Python-Quelle [duplicate]
Lesezeit: 2 Minuten
Nullpoet
In Betracht ziehen:
$ 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
Wie kann ich UTF-8-Strings im Quellcode deklarieren?
# -*- coding: utf-8 -*-
u = 'idzie wąż wąską dróżką'
uu = u.decode('utf8')
s = uu.encode('cp1250')
print(s)
Darüber hinaus kann es sich lohnen, zu überprüfen, ob Ihr Texteditor Ihren Code ordnungsgemäß in UTF-8 codiert. Andernfalls haben Sie möglicherweise unsichtbare Zeichen, die nicht als UTF-8 interpretiert werden.
jetzt gibt es “””UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe2 in position 1: ordinal not in range(128)”””
– Nullpoet
9. Juni 2011 um 7:36 Uhr
Sie müssen nicht verwenden unicode()schreiben Sie einfach eine Zeichenfolge in UTF-8-Codierung.
– Michael Niklas
9. Juni 2011 um 8:03 Uhr
In Python-Versionen älter als 3 müssen Sie auch Unicode-String-Literale mit “u” voranstellen: some_string = u'idzie wąż wąską dróżką'.
– Anton Strogonoff
9. Juni 2011 um 8:06 Uhr
oder #!/usr/bin/env python # Codierung: utf-8
– warvariuc
9. Juni 2011 um 8:47 Uhr
Diese Codierungsdeklaration wird in Python 3 nicht mehr benötigt, wo utf-8 bereits der Standard für Python-Quelldateien ist. Sehen python.org/dev/peps/pep-3120
– Jonathan Hartley
10. August 2016 um 21:06 Uhr
Ranaivo
Vergessen Sie nicht zu überprüfen, ob Ihr Texteditor Ihren Code richtig in UTF-8 codiert.
Andernfalls haben Sie möglicherweise unsichtbare Zeichen, die nicht als UTF-8 interpretiert werden.
Wird dies für Python3 benötigt? Ich weiß, dass Python3 davon ausgeht, dass alle Literale im Code Unicode sind. Aber geht es davon aus, dass die Quelldateien auch in utf8 geschrieben sind?
“Sehen python.org/peps/pep-0263.html für Details” scheint mir klar.
– Lennart Regebro
4. Mai 2013 um 16:27 Uhr