Python 3 utilizza la codifica UTF-8 per i file del codice sorgente per impostazione predefinita. Devo comunque usare la dichiarazione di codifica all'inizio di ogni file sorgente? Piace# -*- coding: utf-8 -*-
Python 3 utilizza la codifica UTF-8 per i file del codice sorgente per impostazione predefinita. Devo comunque usare la dichiarazione di codifica all'inizio di ogni file sorgente? Piace# -*- coding: utf-8 -*-
Risposte:
Poiché l'impostazione predefinita è UTF-8, è necessario utilizzare quella dichiarazione solo quando si devia da quella predefinita o se si fa affidamento su altri strumenti (come l'IDE o l'editor di testo) per utilizzare tali informazioni.
In altre parole, per quanto riguarda Python , solo quando vuoi usare una codifica diversa devi usare quella dichiarazione.
Altri strumenti, come il tuo editor, possono supportare una sintassi simile, motivo per cui la specifica PEP 263 consente una notevole flessibilità nella sintassi (deve essere un commento, il testo coding
deve essere lì, seguito da un carattere :
o =
e uno spazio bianco opzionale, seguito da un codec riconosciuto).
Nota che si applica solo al modo in cui Python legge il codice sorgente . Non si applica all'esecuzione di quel codice, quindi non al modo in cui la stampa, l'apertura di file o qualsiasi altra operazione di I / O si traducono tra byte e Unicode. Per maggiori dettagli su Python, Unicode e le codifiche, vi invito caldamente a leggere il Python Unicode HOWTO , o l'approfondito discorso Pragmatic Unicode di Ned Batchelder.
UTF-8
, che è un'impostazione predefinita.Per progetti multi-codifiche:
Se alcuni file sono codificati in
non-utf-8
, allora anche per questi codificatiUTF-8
dovresti aggiungere anche la dichiarazione di codifica, perché la regola d'oro èExplicit is better than implicit.
configurazione della codifica per un file specifico in pycharm
# vim: set fileencoding=<encoding name> :
# -*- coding: utf-8 -*-
può ancora essere utile per alcuni editor per passare al previsto codificante durante la modifica del file di origine.