56 votos

¿Qué codificación de caracteres utiliza el archivo DBF en los shapefiles?

¿Qué codificación de caracteres utiliza el archivo dbf en los archivos shape? Parece que se maneja de forma diferente, según el programa y la configuración de codificación local de la máquina. ¿Qué codificación es la "correcta" - especificada para el formato?

67voto

Denys S. Puntos 189

La norma DBF original define el uso de ISO8859-1 y sólo ISO8859-1. Por lo tanto, cuando se obtiene un Shapefile realmente conforme a las normas, debe ser ISO8859-1. Por supuesto, esta restricción (muy antigua) no es realmente utilizable hoy en día.

ArcGIS y Geopublisher, AtlasStyler y Geoserver comenzaron a ampliar la norma para definir la codificación. Para ArcGIS Por ejemplo, basta con crear un archivo .cpg (con el mismo nombre base que los demás Shapefiles) y rellenarlo con el nombre de la codificación.

Por ejemplo, crear un myshape.cpg con un editor de texto e insertar 5 caracteres "UTF-8" y guardarlo. Si a continuación, abrir el Shapefile en ArcGIS, que lee el contenido textual de la DBF en ese conjunto de caracteres.

Geoserver: Geoserver WFS puede exportar cualquier capa WFS como un Shapefile comprimido. Cuando se hace esto, un archivo .cst está contenido en el zip, haciendo exactamente lo mismo que el archivo .cpg.

Atención: Todo esto sólo se aplica a los datos, no a los nombres de las columnas. En realidad, sólo debes utilizar ASCII en los nombres de las columnas de un DBF si quieres que el archivo se pueda abrir con otros programas.

Sugerencia: Para cambiar la codificación de un DBF ábralo con OpenOffice Calc... elija Guardar como... haga clic en las "Opciones de filtro" en la parte inferior izquierda y pulse Guardar. A continuación, puede definir la codificación en la que convertir el contenido del texto.

11voto

tobes Puntos 19

Estoy bastante seguro de que no hay una codificación "correcta". Un archivo .dbf puede estar en cualquier codificación y podrás abrir el Shapefile y leer los atributos correctamente si lo conoces.

Puede encontrar el libro blanco de ESRI aquí: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

Normalmente espero que un shapefile esté en UTF-8 o en el local del país cubierto (a menudo alguna codificación latina).

8voto

MobileCushion Puntos 217

Cada vez que veo una pregunta sobre la codificación, remito a la gente a este artículo: http://www.joelonsoftware.com/articles/Unicode.html

Como dice:

No tiene sentido tener un cadena sin saber qué codificación utiliza. Ya no puede pegar su cabeza en la arena y pretender que texto "plano" es ASCII.

3voto

Frank gu Puntos 91

Una forma sencilla es convertir el archivo shp en un archivo csv. Y utilizar enca o iconv para detectar la codificación. He probado con archivos UTF8 y gb18030 y funciona.

0 votos

Este post también aborda la cuestión de cómo detectar la codificación: gis.stackexchange.com/questions/12218/

0voto

knaak Puntos 393

El byte 29 de la cabecera del DBF define la codificación de los campos C en un DBF. ESRI y otros se comportan como se ha descrito en posts anteriores, pero esta no es la mejor solución para muchos países e idiomas en los que la codificación en el byte 29 es suficiente (por ejemplo en Windows ANSI 1252, o en OEM-850); de esta manera, no es necesario "otro archivo", y la información sobre la página de códigos viaja con la tabla. Esta solución es la adoptada por el SIG MiraMon.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X