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

47

¿Qué codificación de caracteres utiliza el archivo dbf en shapefiles? 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 'correcta', especificada para el formato?

    
pregunta Mnementh 16.11.2010 - 00:23

4 respuestas

56

El estándar DBF original define usar ISO8859-1 , y solo ISO8859-1. Por lo tanto, cuando obtiene un Shapefile que realmente cumple con los estándares, 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 extender el estándar para definir la codificación. Para ArcGIS , por ejemplo, simplemente cree un archivo .cpg (con el mismo nombre base que los otros Shapefiles ) y rellénelo con el nombre de la codificación.

por ejemplo cree un myshape.cpg con un editor de texto e inserte 5 caracteres "UTF-8" y guárdelo. Si luego abres el Shapefile en ArcGIS, lee el contenido textual del 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 archivo zip, haciendo exactamente lo mismo que el archivo .cpg.

Atención: Todo esto solo se aplica a los datos, no a los nombres de columna. En realidad, solo debes usar ASCII en los nombres de columna 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 ... seleccione GuardarAs ... haga clic en "Opciones de filtro" en la parte inferior izquierda y presione guardar. A continuación, puede definir la codificación para convertir el contenido del texto en.

    
respondido por el alfonx 19.11.2010 - 10:45
11

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

Puede encontrar el informe de ESRI aquí: enlace

Por lo general, espero que un shapefile sea UTF-8 o en el local del país cubierto (a menudo, una codificación latina).

    
respondido por el underdark 16.11.2010 - 08:49
8

Cada vez que veo una pregunta sobre la codificación, remito a las personas a este artículo: enlace

Como dice:

  

No tiene sentido tener un   cadena sin saber qué codificación   usa. Ya no puedes pegar tu   cabeza en la arena y fingir que   El texto "simple" es ASCII.

    
respondido por el Mark Ireland 16.11.2010 - 20:01
3

Una forma sencilla es convertir un archivo shp en un archivo csv. Y usa enca o iconv para detectar la codificación. Probé con archivos UTF8 y gb18030 y funciona.

    
respondido por el Frank gu 12.07.2012 - 09:39

Lea otras preguntas en las etiquetas