Quel encodage de caractères est utilisé par le fichier DBF dans les fichiers de formes?

52

Quel est l'encodage de caractères utilisé par le fichier dbf dans les shapefiles? Il semble que le traitement soit différent, en fonction du programme et des paramètres de codage locaux de la machine. Quel est le bon encodage - spécifié pour le format?

Mnementh
la source
Vous devriez définitivement accorder le drapeau de réponse à alfonx. @underdark Aucune infraction!
JJD

Réponses:

60

La norme DBF d'origine définit l'utilisation d' ISO8859-1 et uniquement d'ISO8859-1. Ainsi, lorsque vous obtenez un fichier de formes conforme aux normes, il devrait être ISO8859-1. Bien sûr, cette (très ancienne) restriction n’est pas vraiment utilisable de nos jours.

ArcGIS et Geopublisher, AtlasStyler et Geoserver ont commencé à étendre la norme pour définir le codage. Pour ArcGIS , par exemple, créez simplement un fichier .cpg (portant le même nom de base que les autres fichiers de formes) et remplissez-le avec le nom de l'encodage.

Par exemple, créez un fichier myshape.cpg avec un éditeur de texte et insérez 5 caractères "UTF-8" et enregistrez-le. Si vous ouvrez ensuite le fichier de forme dans ArcGIS, il lit le contenu textuel du DBF dans ce jeu de caractères.

Geoserver: Geoserver WFS peut exporter n'importe quelle couche WFS sous forme de fichier de forme zippé. Lorsque cela est fait, un fichier .cst est contenu dans le zip, faisant exactement la même chose que le fichier .cpg.

Attention: Tout cela ne concerne que les données, pas les noms de colonnes. Vous ne devriez utiliser ASCII que dans les noms de colonne d'un fichier DBF si vous voulez que le fichier puisse être ouvert avec d'autres programmes.

Astuce: pour changer l'encodage d'un DBF, ouvrez-le avec OpenOffice Calc .. choisissez SaveAs ... cliquez sur "Options de filtrage" en bas à gauche et appuyez sur Enregistrer. Vous pouvez ensuite définir le codage pour convertir le contenu du texte en.

Alfonx
la source
3
Très bonne publication! Le monde serait meilleur si les gens envoyaient leurs fichiers de formes avec des fichiers .cpg.
underdark
2
Avez-vous une référence pour que le jeu de caractères ISO8559-1 soit le jeu de caractères officiel? Les spécifications DBF que j'ai trouvées sont très courtes et ne le mentionnent pas.
Chris
3
Si vous recevez un message, General input/output errorvous n'avez probablement pas installé Base . Le problème est le même que vous utilisiez OpenOffice ou LibreOffice.
JJD
2
+1 pour l'indice OpenOffice / LibreOffice Calc. Là, vous pouvez vous assurer que le fichier DBF a le codage supposé. Cependant, comme l'a souligné JJD, LibreOffice Base doit également être installé sur Ubuntu pour pouvoir ouvrir les fichiers DBF dans Calc.
Marian
1
Un .cpgfichier est supposé fonctionner correctement dans QGIS, également, à partir de libgdal 1.9. Parfois, cela semble même être nécessaire: ssrebelious.wordpress.com/2012/03/11/…
krlmlr
11

Je suis à peu près sûr qu'il n'y a pas d'encodage "correct". Un fichier .dbf peut être dans n'importe quel encodage et vous pourrez ouvrir le Shapefile et lire les attributs correctement si vous le connaissez.

Vous pouvez trouver le livre blanc ESRI ici: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

Je m'attends généralement à ce qu'un fichier de formes soit au format UTF-8 ou local du pays couvert (souvent un codage en latin).

sous-bois
la source
7

Chaque fois que je vois une question sur le codage, je renvoie les gens à cet article: http://www.joelonsoftware.com/articles/Unicode.html

Comme il est dit:

Il n’a pas de sens d’avoir une chaîne sans savoir quel encodage elle utilise. Vous ne pouvez plus vous mettre la tête dans le sable et prétendre que le texte "ordinaire" est au format ASCII.

Mark Ireland
la source
Exactement! Il arrive tout le temps que les gens me disent que je leur ai envoyé un fichier dans le mauvais encodage simplement parce qu'un éditeur (la plupart du temps np ++) prend des suppositions géniales. +1
unicoletti
3

Un moyen simple est de convertir un fichier shp en fichier csv. Et utilisez enca ou iconv pour détecter l'encodage. J'ai essayé avec les fichiers UTF8 et gb18030 et cela fonctionne.

Frank gu
la source
+1 pour la réponse afin de déterminer le codage actuel. Je pense cependant que la question recherchait davantage ce que serait un encodage standard, le cas échéant.
Obtenez Spatial
cet article aborde également la question de la détection de l'encodage: gis.stackexchange.com/questions/12218/…
toms