DBF dosyası tarafından shapefiles içinde hangi karakter kodlaması kullanılır?


52

Dbf dosyası tarafından shapefiles içinde hangi karakter kodlaması kullanılır? Programa ve makinenin yerel kodlama ayarlarına bağlı olarak farklı şekilde ele alındığı görülüyor. Hangi kodlama 'doğru' - format için belirtilmiş?


Cevap bayrağını kesinlikle alfonx'a vermelisin. @underdark Alınma!
JJD

Yanıtlar:


60

Orijinal DBF standardı, ISO8859-1 ve sadece ISO8859-1 kullanımını tanımlar . Yani, gerçekten standartlara uygun bir Shapefile aldığınızda, ISO8859-1 olmalıdır. Tabii ki, bu (çok eski) kısıtlama günümüzde gerçekten kullanılamıyor.

ArcGIS ve Geopublisher, AtlasStyler ve Geoserver, kodlamayı tanımlamak için standardı genişletmeye başladı. İçin ArcGIS , örneğin sadece (diğer Shapefiles aynı basename ile) .cpg dosyası oluşturmak ve kodlama adı ile doldurun.

Örneğin, bir texteditor ile bir myshape.cpg oluşturun ve "UTF-8" 5 karakter ekleyin ve kaydedin. Ardından Shape dosyasını ArcGIS'te açarsanız, bu karakter dizisindeki DBF'nin metin içeriğini okur.

Geoserver: Geoserver WFS, herhangi bir WFS katmanını sıkıştırılmış bir Shapefile olarak dışa aktarabilir. Bu yapıldığında, zipte bir .cst dosyası bulunur ve .cpg dosyasıyla aynı şekilde yapılır.

Dikkat: Bütün bunlar sütun adları için değil yalnızca veriler için geçerlidir. Dosyanın diğer programlarla açılmasını istiyorsanız, ASCII'yi yalnızca bir DBF'nin sütun adlarında kullanmalısınız.

İpucu: Bir DBF'nin kodlamasını değiştirmek için OpenOffice Calc. İle açın. SaveAs'ı seçin ... sol alt kısımdaki "Filter options" tıklayın ve kaydet düğmesine basın. Daha sonra metin içeriğini dönüştürmek için kodlamayı tanımlayabilirsiniz.


3
Harika yazı! İnsanlar kendi shapefiles .cpg dosyaları ile sevk olsaydı dünya daha iyi bir yer olurdu.
Underdark

2
Resmi karakter kümesi olan ISO8559-1 karakter kümesi için bir referansınız var mı? Bulduğum DBF özellikleri çok kısa ve bundan bahsetmiyor.
Chris

3
Eğer bir General input/output erroraldınızsa, muhtemelen Base yüklü değildir . Sorun, OpenOffice veya LibreOffice kullanıyor olsanız da aynıdır.
JJD

2
OpenOffice / LibreOffice Calc ipucu için +1. Burada DBF dosyasının varsayılan kodlamaya sahip olduğundan emin olabilirsiniz. Ancak, JJD'nin işaret ettiği gibi, Ubuntu'da da Calc'de DBF dosyalarını açmak için LibreOffice Base yüklü olmalıdır.
Marian

1
Bir .cpgdosyanın QGIS'de libgdal 1.9'dan itibaren iyi çalışması gerekiyor. Bazen gerekli bile görünüyor: ssrebelious.wordpress.com/2012/03/11/…
krlmlr 29:15

11

"Doğru" kodlamanın olmadığından eminim. Bir .dbf dosyası herhangi bir kodlamada olabilir ve Shapefile dosyasını açabilir ve özellikleri biliyorsanız doğru bir şekilde okuyabilirsiniz.

ESRI tanıtım kağıdını burada bulabilirsiniz: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

Genellikle bir şekil dosyasının UTF-8 veya kapsanan ülkenin yerel bölgesinde olmasını beklerim (genellikle bazı Latin kodlamaları).


7

Kodlama ile ilgili bir soru gördüğümde, insanları bu makaleye yönlendiririm: http://www.joelonsoftware.com/articles/Unicode.html

Dediği gibi:

Hangi kodlamayı kullandığını bilmeden bir dizgeye sahip olmak mantıklı gelmiyor. Artık kafanızı kuma sokamaz ve "düz" metnin ASCII olduğunu iddia edemezsiniz.


Kesinlikle! İnsanların bana yanlış kodlamada kendilerine bir dosya gönderdiğimi söyledikleri her zaman olur, çünkü bir editör (np ++ çoğu zaman) vahşi tahminlerde bulunur. +1
unicoletti

3

Basit bir yol shp dosyasını bir csv dosyasına dönüştürmektir. Ve kodlamayı tespit etmek için enca veya iconv komutunu kullanın. UTF8 ve gb18030 dosyaları ile denedim ve çalışır.


Geçerli kodlamayı çözmenin bir yolu olarak cevap için +1. Sorunun standart bir şifrelemenin ne olacağı ile ilgili daha fazla araştırdığını düşünüyor olsa da.
Spatial

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.