[Python-es] [Consulta] Caracter raro en .csv

lasizoillo lasizoillo en gmail.com
Mie Jul 22 05:58:36 EDT 2020


El mié., 22 jul. 2020 a las 0:01, Darío vía Python-es (<python-es en python.org>)
escribió:

>
> Estaba hablando con un compañero y me acaba de decir lo mismo.
> Ahora, lo ideal es que se use el utf o latin? Cuál es más aconsejable?
> Gracias
>
>
> Hola, uso utf-8 porque tengo entendido que si usás Windows debe ser latin
> (al menos eso me pasaba al compilar archvos .tex). Habitualmente pongo
>
> # -*- coding: utf-8 -*-
>
> al inicio del guión.
>
>
Con eso estás informando al intérprete cuál es la codificación del fichero
python (tu código fuente) y para nada estás especificando la codificación
de caracteres con la que te comunicas con el mundo exterior. Con eso
afectas a la codificación de cadenas unicode en tu código. Unos ejemplos
estrambóticos para ilustrarlo en python2 (sacados de una charla del 2011):

Ejemplo 1:
# -*- coding: rot13 -*-
cevag h"fnyhqbf qrfqr rfcn�n"

Ejemplo 2:
# -*- coding: rot13 -*-
cevag "hola mundo desde españa"

La forma correcta es la comentada por ricardo: open(nombre_del_fichero,
encoding='latin-1')

En cuanto a si es mejor latin-1 o utf-8 depende. Con latin-1 todos los
caracteres ocupan un byte por lo que el uso de memoria es más predecible
y se puede usar algoritmos como el boyer-moore en la representación binaria
del texto. Con utf-8 tienes una representación mayormente compacta
pero capaz de representar klingon, kanji, cirílico y caracteres de casi
cualquier otra lengua. Personalmente prefiero utf-8 y tener muy claro
que cadenas de bytes y de texto son cosas completamente diferentes aunque
haya formas de convertir unas en otras: por la red o a la consola de
texto o... transmites bytes e internamente trabajas con cadenas de texto.
Cualquier comunicación dentro/fuera o fuera/dentro requiere definir
una codificación de caracteres (la que sea) y hacer la conversión correcta.

Un saludo,

Javi
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20200722/40283b68/attachment.html>


Más información sobre la lista de distribución Python-es