Python 3 utiliza la codificación UTF-8 para el código fuente de los archivos por defecto. ¿Puedo utilizar la declaración de codificación al principio de cada archivo de código fuente? Como # -*- coding: utf-8 -*-

2 Comentarios

  1. 88

    Debido a que por defecto es UTF-8, usted sólo tiene que utilizar la declaración, cuando se desvía de la omisión, o si depende de otras herramientas (como el IDE o editor de texto) para hacer uso de esa información.

    En otras palabras, tan lejos como Python es cuestión, sólo cuando se desea utilizar un sistema de codificación que difiere usted no tiene que utilizar la declaración.

    Otras herramientas, tales como su editor, puede apoyar la sintaxis similar, que es la razón por la PEP 263 especificación permite una considerable flexibilidad en la sintaxis (debe ser un comentario, el texto coding debe estar allí, seguido por un : o = carácter opcional y de los espacios en blanco, seguido por una reconocida codec).

    Tenga en cuenta que sólo se aplica a la manera en Python lee el código fuente. No se aplican a la ejecución de ese código, así que no se cómo impresión, la apertura de archivos, o cualquier otro de operaciones I/O traducir entre bytes y Unicode. Para más detalles sobre Python, Unicode, y codificaciones, le recomiendo leer el Python Unicode HOWTO, o la muy completo Pragmática Unicode hablar por Ned Batchelder.

    • El # -*- coding: utf-8 -*- aún puede ser útil para algunos editores para cambiar a la espera de codificación al editar el archivo de origen.
    • Una Marca de Orden de Bytes podría hacer lo mismo, ¿no?
    • el UTF-8 lista de materiales es una abominación en esta tierra produjo por Microsoft.. Consulte en.wikipedia.org/wiki/Byte_order_mark#UTF-8
    • Tu enlace no parecen estar de acuerdo con usted
    • no, el WP artículo sólo resume el fondo, es mi propia opinión de que es una abominación. El punto de una lista de materiales es el registro de la orden de bytes (de ahí el nombre, la Marca de Orden de Bytes). No hay ninguna orden de bytes de la confusión en UTF-8, que sólo tiene esa función en UTF-16 y UTF-32. El valor ya es un re-propuso ancho cero no-break carácter de espacio (handy, como accidental de impresión, a continuación, termina con completamente invisible de salida), el re-uso de esa magia constante que está mal, en mi opinión.
    • Estoy de acuerdo con la codificación UTF-8 lista de materiales a ser un Microsoft verruga. Como también la mencionada página de la wiki dice, no tiene ningún sentido. BOM significa Marca de Orden de Bytes. En UTF-8, no hay ninguna duda sobre el orden de los bytes. Y el BOM de UTF-8 causas de los problemas, a veces (intentar concatenar los archivos de texto, por ejemplo). Se puede leer también como esto NO es UTF-16. De todos modos, es completamente ajena a la # -*- coding.... El editor puede saber el coding de la prescripción, y se puede ignorar completamente la lista de materiales.
    • Puede usted eleborate lo que no estándar de los casos cuando se necesita usar # -*- coding: utf-8 -*- en python 3?
    • para Python, que no hay estándar de los casos. Pero si el editor no es el uso de UTF-8 por defecto, pero se admite modelines (como Vim o Emacs o varios otros editores de código), entonces usted puede escribir su comentario que, tanto en Python y su editor puede leer, así que ambos utilizan la misma codificación cuando se trabaja con el archivo de origen.
    • en el ejemplo específico que utiliza, con el -*- marcadores, es un emacs modeline. Emacs, la lectura que de la línea, va a configurar el archivo de la codificación a UTF-8, que es muy útil a la hora de la edición. Vim utiliza un sintaxis diferente, pero Python usa la coincidencia de patrón para apoyar a cualquiera de los dos formatos, así como los de los demás.

  2. 1

    No, si:

    • todo el proyecto utilice sólo el UTF-8, que es un defecto.
    • y está seguro de que su IDE herramienta no necesita que la declaración de codificación en cada archivo.

    Sí, si

    • su proyecto se basa en la codificación diferente
    • o se basa en muchas codificaciones.

    Para múltiples codificaciones de proyectos:

    Si algunos de los archivos están codificados en el non-utf-8, entonces, incluso para estos
    codificado en UTF-8 debe agregar declaración de codificación demasiado, porque
    la regla de oro es Explicit is better than implicit.

    Referencia:

    • PyCharm no es necesario que la declaración:

    la configuración de la codificación de archivo específico en pycharm

    • vim no necesita de esa declaración, pero:
    # vim: set fileencoding=<encoding name> :

Dejar respuesta

Please enter your comment!
Please enter your name here