[Pxr-commits] cambios en read.px --- encodings

Carlos J. Gil Bellosta cgb at datanalytics.com
Wed Aug 24 14:53:53 CEST 2011


Hola, ¿qué tal?

El día 24 de agosto de 2011 04:11, Oscar Perpiñan Lamigueiro
<oscar.perpinan at upm.es> escribió:
> Hola,
>
> Al intentar abrir el fichero
> http://www.ine.es/inebase/fic/px/l0/EPOB_es_6.px, ese que daba
> problemas por su tamaño y que motivó el uso de useBytes=TRUE en
> strsplit, he tenido problemas. R cometía una violación de segmento y
> fuera. Revisando el código de read.px he visto que faltaba añadir
> useBytes=TRUE en otra línea más. Al añadirlo he conseguido descargar el
> fichero sin problemas.

El añadir "useBytes = TRUE" no creo que sea la solución definitiva. Es
más bien un apaño.

Voy a hablar de un asunto sobre el que no sé demaisado, el de las
codificaciones ("encodings") pero sobre el que me he planteado
aprender lo que haga falta.

El problema con useBytes es que interpreta caracteres "multibyte" como
una sucesión de caracteres. Si se usa strspit para partir por ";" y un
caracter "multibyte" se codifica, por ejemplo, con los dos "bytes"
";&", entonces tenemos un problema.

Tengo una hipótesis: que las funciones de procesamiento de texto que
no aceptan "encoding" como parámetro utilizan el "encoding" local de
la máquina. Si (y sólo si) esta hipótesis fuese cierta, lo natural
sería:

1) Transformar las cadenas de texto en el la codificación local de la
máquina (que es distinta en windows y linux, por ejemplo).
2) Dejar que strsplit y demás operen con cadenas con dicha codificación.
3) En las funciones de salida (write.px, por ejemplo), recodificar de
nuevo las cadenas.

Objetivo: que internamente siempre se trabaje con el encoding de la
máquina del usuario. Y que todo funcione igual en linux y en windows.

Digo esto porque el otro día el código que le falló a Óscar me
funcionó a mí. Lo cual indica que nos enfrentamos a un problema de
plataformas y codificaciones y que si todos nos esforzamos en dejarlo
corriendo en _nuestra_ máquina, podemos romperlo en la de los demás.

Insisto, sé poco, muy poco sobre el tema, que aventuro muy aburrido,
de los encodings. Pero habría que tratar de encontrar una solución que
funcionase justificadamente en el mayor número posible de
combinaciones de plataformas.

¡Es tarea abierta!

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com


More information about the Pxr-commits mailing list