Quale codifica dei caratteri viene utilizzata dal file DBF nei file di forma?


52

Quale codifica dei caratteri viene utilizzata dal file dbf nei shapefile? Sembra che sia gestito in modo diverso, in base al programma e alle impostazioni di codifica locali della macchina. Quale codifica è "giusta", specificata per il formato?


Dovresti assolutamente assegnare il flag di risposta ad alfonx. @underdark Senza offesa!
JJD,

Risposte:


60

Lo standard DBF originale definisce l'uso di ISO8859-1 e solo ISO8859-1. Quindi, quando ottieni uno Shapefile conforme agli standard, dovrebbe essere ISO8859-1. Naturalmente, questa (molto vecchia) restrizione non è realmente utilizzabile al giorno d'oggi.

ArcGIS e Geopublisher, AtlasStyler e Geoserver hanno iniziato a estendere lo standard per definire la codifica. Per ArcGIS , ad esempio, basta creare un file .cpg (con lo stesso nome di base degli altri Shapefile) e riempirlo con il nome della codifica.

ad es. creare un myshape.cpg con un texteditor e inserire 5 caratteri "UTF-8" e salvarlo. Se quindi si apre Shapefile in ArcGIS, legge i contenuti testuali del DBF in quel set di caratteri.

Geoserver: Geoserver WFS può esportare qualsiasi livello WFS come Shapefile compresso. Al termine, un file .cst è contenuto nella zip, esattamente come il file .cpg.

Attenzione: tutto ciò si applica solo ai dati, non ai nomi delle colonne. Dovresti davvero usare ASCII solo nei nomi di colonna di un DBF se vuoi che il file sia apribile con altri programmi.

Suggerimento: per modificare la codifica di un DBF aprilo con OpenOffice Calc .. scegli Salva come ... fai clic su "Opzioni filtro" in basso a sinistra e premi Salva. È quindi possibile definire la codifica in cui convertire il contenuto del testo.


3
Ottimo post! Il mondo sarebbe un posto migliore se le persone spedissero i loro shapefile con file .cpg.
underdark

2
Hai un riferimento per il set di caratteri ISO8559-1 come set di caratteri ufficiale? Le specifiche DBF che ho trovato sono molto brevi e non le menziono.
Chris,

3
Se ricevi un messaggio General input/output errorprobabilmente non hai installato Base . Il problema è lo stesso se si utilizza OpenOffice o LibreOffice.
JJD,

2
+1 per il suggerimento di OpenOffice / LibreOffice Calc. Lì puoi assicurarti che il file DBF abbia la codifica presunta. Tuttavia, come sottolineato da JJD, anche su Ubuntu è necessario avere LibreOffice Base installato per aprire i file DBF in Calc.
Marian,

1
Un .cpgfile dovrebbe funzionare bene anche in QGIS, a partire da libgdal 1.9. A volte sembra addirittura necessario: ssrebelious.wordpress.com/2012/03/11/…
krlmlr

11

Sono abbastanza sicuro che non esiste una codifica "giusta". Un file .dbf può essere in qualsiasi codifica e sarai in grado di aprire lo Shapefile e leggere correttamente gli attributi se lo conosci.

È possibile trovare il white paper ESRI qui: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

Di solito mi aspetto che uno shapefile sia UTF-8 o nel locale del paese coperto (spesso con una codifica latina).


7

Ogni volta che vedo una domanda sulla codifica, rimando le persone a questo articolo: http://www.joelonsoftware.com/articles/Unicode.html

Come dice:

Non ha senso avere una stringa senza sapere quale codifica utilizza. Non puoi più mettere la testa nella sabbia e fingere che il testo "normale" sia ASCII.


Esattamente! Succede sempre che le persone mi dicano che ho inviato loro un file con la codifica sbagliata solo perché un editor (np ++ il più delle volte) prende ipotesi selvagge. +1
unicoletti

3

Un modo semplice è convertire il file shp in un file CSV. E usa enca o iconv per rilevare la codifica. Ho provato con i file UTF8 e gb18030 e funziona.


+1 per la risposta come modo per capire la codifica corrente. Penso comunque che la domanda stesse cercando di più quale sarebbe una codifica standard, se presente.
Ottieni Spatial il

questo post affronta anche la domanda su come rilevare la codifica: gis.stackexchange.com/questions/12218/…
toms
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.