Jakiego kodowania znaków używa plik DBF w plikach kształtów?


52

Jakie kodowanie znaków jest używane przez plik dbf w plikach kształtów? Wygląda na to, że jest obsługiwany inaczej, w zależności od programu i lokalnych ustawień kodowania maszyny. Które kodowanie jest „właściwe” - określone dla formatu?


Zdecydowanie powinieneś nadać flagę odpowiedzi alfonx. @underdark Bez obrazy!
JJD

Odpowiedzi:


60

Oryginalny standard DBF definiuje użycie ISO8859-1 i tylko ISO8859-1. Tak więc, gdy otrzymasz plik Shapefile, który jest naprawdę zgodny ze standardami, powinien to być ISO8859-1. Oczywiście, to (bardzo stare) ograniczenie nie jest obecnie zbyt użyteczne.

ArcGIS i Geopublisher, AtlasStyler i Geoserver rozpoczęły rozszerzanie standardu w celu zdefiniowania kodowania. W przypadku ArcGIS np. Po prostu utwórz plik .cpg (o tej samej nazwie basename co inne pliki Shapefile) i wypełnij go nazwą kodowania.

np. utwórz plik myshape.cpg z edytorem tekstu i wstaw 5 znaków „UTF-8” i zapisz go. Jeśli następnie otworzysz plik Shapefile w ArcGIS, odczytuje on tekstową zawartość DBF w tym zestawie znaków.

Geoserver: Geoserver WFS może eksportować dowolną warstwę WFS jako spakowany plik Shapefile. Po wykonaniu tej czynności plik .cst jest zawarty w pliku zip, zachowując się dokładnie tak samo, jak plik .cpg.

Uwaga: wszystko to dotyczy tylko danych, a nie nazw kolumn. Naprawdę powinieneś używać ASCII tylko w nazwach kolumn DBF, jeśli chcesz, aby plik można było otwierać za pomocą innych programów.

Wskazówka: Aby zmienić kodowanie pliku DBF, otwórz go za pomocą OpenOffice Calc .. wybierz SaveAs ... kliknij „Opcje filtrów” w lewym dolnym rogu i naciśnij Zapisz. Następnie możesz zdefiniować kodowanie, na które ma zostać przekonwertowana zawartość tekstowa.


3
Wspaniały post! Świat byłby lepszym miejscem, gdyby ludzie wysyłali swoje pliki kształtów z plikami .cpg.
podmroku

2
Czy masz odniesienie do zestawu znaków ISO8559-1 będącego oficjalnym zestawem znaków? Znalezione przeze mnie specyfikacje DBF są bardzo krótkie i nie wspominają o tym.
Chris

3
Jeśli otrzymasz General input/output error, prawdopodobnie nie masz zainstalowanej bazy . Problem jest taki sam, niezależnie od tego, czy korzystasz z OpenOffice czy LibreOffice.
JJD

2
+1 za wskazówkę OpenOffice / LibreOffice Calc. Tam możesz upewnić się, że plik DBF ma założone kodowanie. Jednak, jak wskazał JJD, również na Ubuntu musisz mieć zainstalowany LibreOffice Base, aby otwierać pliki DBF w Calc.
Marian

1
.cpgPlik ma pracować dobrze w QGIS, też, jak z libgdal 1,9. Czasami wydaje się to nawet konieczne: ssrebelious.wordpress.com/2012/03/11/…
krlmlr

11

Jestem prawie pewien, że nie ma „właściwego” kodowania. Plik .dbf może mieć dowolne kodowanie. Będziesz mógł otworzyć plik Shapefile i poprawnie odczytać atrybuty, jeśli go znasz.

Białą księgę ESRI można znaleźć tutaj: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

Zwykle spodziewam się, że plik kształtu będzie albo UTF-8, albo lokalny w kraju objętym programem (często niektóre kodowanie łacińskie).


7

Za każdym razem, gdy pojawia się pytanie o kodowanie, odsyłam ludzi do tego artykułu: http://www.joelonsoftware.com/articles/Unicode.html

Jak mówi:

Nie ma sensu mieć łańcucha bez znajomości używanego kodowania. Nie możesz już trzymać głowy w piasku i udawać, że „zwykły” tekst to ASCII.


Dokładnie! Zdarza się to cały czas, gdy ludzie mówią mi, że wysłałem im plik w niewłaściwym kodowaniu tylko dlatego, że edytor (np. ++ większość razy) zgadywał. +1
unicoletti

3

Prostym sposobem jest konwersja pliku shp do pliku csv. I użyj enca lub iconv do wykrycia kodowania. Próbowałem z plikami UTF8 i gb18030 i działa.


+1 za odpowiedź jako sposób na wykrycie obecnego kodowania. Myślę jednak, że pytanie dotyczyło raczej standardowego kodowania, jeśli w ogóle.
Uzyskaj Spatial

w tym poście poruszono również kwestię wykrywania kodowania: gis.stackexchange.com/questions/12218/…
toms
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.