cambiar codificación del código de iso-8859-1 a utf-8
La codificación predeterminada de muchas de las aplicaciones en Linux es la uft-8. La mayoría de nosotros hemos utilizado por varios años la codificación iso-8859-1 (latin1, europeo occidental).
En nuestro caso hemos escrito mucho código python en iso-8859-1 y por lo general nuestras bases de datos utilizan iso-8859-1.
Cambiar la codificación del código (en este caso python) resulta sencillo. El siguiente script bash en el directorio del código resuelve el problema
********************************************************************************
#!/bin/bash
FILES=`ls *.py`;
for FILE in $FILES; do
echo $FILE
sed -i 's/-*- coding: iso-8859-1 -*-/-*- coding: utf-8 -*-/g' $FILE
mv $FILE temp_$FILE
iconv --from-code=ISO-8859-1 --to-code=UTF-8 temp_$FILE> $FILE
rm temp_$FILE
done
*************************************************************************
En el caso de la base de datos (Postgresql) se puede aplicar el comando sobre el dump y con eso se resuelve:
iconv --from-code=ISO-8859-1 --to-code=UTF-8 dump_fuente.sql> dump_utf-8.sql
Si no se desea cambiar la codificación del sistema de base de datos se puede optar por cambiar la codificación hacia la base de datos:
sql=sql.decode('utf-8').encode('iso-8859-1') (esto es sólo necesario si el sql contiene simbolos que deban ser decodificado)
y desde la misma a la inversa:
s.decode('iso-8859-1').encode('utf-8')
En nuestro caso hemos escrito mucho código python en iso-8859-1 y por lo general nuestras bases de datos utilizan iso-8859-1.
Cambiar la codificación del código (en este caso python) resulta sencillo. El siguiente script bash en el directorio del código resuelve el problema
********************************************************************************
#!/bin/bash
FILES=`ls *.py`;
for FILE in $FILES; do
echo $FILE
sed -i 's/-*- coding: iso-8859-1 -*-/-*- coding: utf-8 -*-/g' $FILE
mv $FILE temp_$FILE
iconv --from-code=ISO-8859-1 --to-code=UTF-8 temp_$FILE> $FILE
rm temp_$FILE
done
*************************************************************************
En el caso de la base de datos (Postgresql) se puede aplicar el comando sobre el dump y con eso se resuelve:
iconv --from-code=ISO-8859-1 --to-code=UTF-8 dump_fuente.sql> dump_utf-8.sql
Si no se desea cambiar la codificación del sistema de base de datos se puede optar por cambiar la codificación hacia la base de datos:
sql=sql.decode('utf-8').encode('iso-8859-1') (esto es sólo necesario si el sql contiene simbolos que deban ser decodificado)
y desde la misma a la inversa:
s.decode('iso-8859-1').encode('utf-8')