Arbeiten mit UTF-8-Codierung in Python-Quelle [duplicate]

Lesezeit: 2 Minuten

Benutzer-Avatar
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?

Benutzer-Avatar
Michael Niklas

In Python 3 ist UTF-8 die Standardquellkodierung (siehe PEP 3120), sodass überall Unicode-Zeichen verwendet werden können.

In Python 2 können Sie im Quellcode-Header Folgendes deklarieren:

# -*- coding: utf-8 -*-
....

Es ist beschrieben in der PEP 0263:

Dann können Sie UTF-8 in Zeichenfolgen verwenden:

# -*- 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


Benutzer-Avatar
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?

    – Ricardo Magalhães Cruz

    28. Juni 2016 um 23:58 Uhr

  • @RicardoCruz Ja, ich glaube, utf-8 ist die Standardeinstellung für Python 3. Siehe python.org/dev/peps/pep-3120

    – Jonathan Hartley

    10. August 2016 um 21:05 Uhr

  • @ricardo-cruz Bei Python 3 sind alle Strings Unicode-Strings, sodass die ursprüngliche Kodierung der Quelle zur Laufzeit keine Auswirkungen hat. 1. PEP 3120 – Verwendung von UTF-8 als Standard-Quellcodierung 2. PEP 263 – Definieren von Python-Quellcode-Kodierungen

    – noobninja

    29. Januar 2017 um 1:45 Uhr


  • Verwenden # coding: utf8 Anstatt von # -*- coding: utf-8 -*-das ist viel einfacher zu merken.

    – show0k

    10. April 2017 um 13:35 Uhr

  • Dies sollte ein Kommentar zu Accepted Answer sein!!!!

    – André Figueiredo

    10. Februar 2018 um 15:41 Uhr

1109710cookie-checkArbeiten mit UTF-8-Codierung in Python-Quelle [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy