Pengkodean karakter apa yang digunakan oleh file DBF di shapefile?

52

Pengodean karakter apa yang digunakan oleh file-dbf di shapefile? Tampaknya itu ditangani berbeda, berdasarkan program dan pengaturan penyandian lokal mesin. Pengkodean mana yang 'benar' - ditentukan untuk format?

Mnementh
sumber
Anda harus secara pasti memberikan bendera jawaban ke alfonx. @underdark Jangan tersinggung!
JJD

Jawaban:

60

Standar DBF asli mendefinisikan untuk menggunakan ISO8859-1 , dan hanya ISO8859-1. Jadi, ketika Anda mendapatkan Shapefile yang benar-benar sesuai standar, itu harus ISO8859-1. Tentu saja, pembatasan (sangat lama) ini tidak terlalu bisa digunakan saat ini.

ArcGIS dan Geopublisher, AtlasStyler dan Geoserver mulai memperluas standar untuk mendefinisikan encoding. Untuk ArcGIS , misalnya, buat saja file .cpg (dengan nama samaran yang sama dengan Shapefile lainnya) dan isi dengan nama pengkodean.

mis. buat myshape.cpg dengan texteditor dan masukkan 5 karakter "UTF-8" dan simpan. Jika Anda kemudian membuka Shapefile di ArcGIS, itu membaca konten tekstual dari DBF di charset itu.

Geoserver: Geoserver WFS dapat mengekspor lapisan WFS sebagai Shapefile yang di-zip. Ketika ini selesai, file .cst terkandung dalam zip, melakukan persis sama dengan file .cpg.

Perhatian: Semua ini hanya berlaku untuk data, bukan nama kolom. Anda harus benar-benar hanya menggunakan ASCII dalam nama kolom DBF jika Anda ingin file dapat dibuka dengan program lain.

Petunjuk: Untuk mengubah pengkodean DBF, bukalah dengan OpenOffice Calc .. pilih SaveAs ... klik "Filter options" di kiri bawah dan tekan save. Anda kemudian dapat menentukan pengkodean untuk mengubah isi teks menjadi.

alfonx
sumber
3
Pos yang bagus! Dunia akan menjadi tempat yang lebih baik jika orang-orang mengirimkan shapefile mereka dengan file .cpg.
underdark
2
Apakah Anda memiliki referensi untuk charset ISO8559-1 sebagai charset resmi? Spesifikasi DBF yang saya temukan sangat pendek dan tidak menyebutkannya.
Chris
3
Jika Anda menerima, General input/output errorAnda mungkin tidak memiliki Pangkalan yang diinstal . Masalahnya sama apakah Anda menggunakan OpenOffice atau LibreOffice.
JJD
2
+1 untuk petunjuk OpenOffice / LibreOffice Calc. Di sana Anda dapat memastikan file DBF memiliki pengkodean yang diasumsikan. Namun, seperti yang ditunjukkan JJD, juga di Ubuntu Anda harus menginstal LibreOffice Base untuk membuka file DBF di Calc.
Marian
1
Sebuah .cpgfile yang seharusnya bekerja dengan baik di QGIS, juga, karena dari libgdal 1,9. Kadang-kadang bahkan tampaknya diperlukan: ssrebelious.wordpress.com/2012/03/11/…
krlmlr
11

Saya cukup yakin bahwa tidak ada pengkodean "benar". File .dbf dapat berupa penyandian apa pun dan Anda akan dapat membuka Shapefile dan membaca atribut dengan benar jika Anda mengetahuinya.

Anda dapat menemukan kertas putih ESRI di sini: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

Saya biasanya mengharapkan shapefile berupa UTF-8 atau di lokal negara yang dicakup (sering beberapa pengkodean Latin).

underdark
sumber
7

Setiap kali saya melihat pertanyaan tentang penyandian, saya merujuk orang ke artikel ini: http://www.joelonsoftware.com/articles/Unicode.html

Seperti dikatakan:

Tidak masuk akal memiliki string tanpa mengetahui pengkodean apa yang digunakannya. Anda tidak dapat lagi menjulurkan kepala ke pasir dan berpura-pura bahwa teks "biasa" adalah ASCII.

Tandai Irlandia
sumber
Persis! Itu terjadi setiap saat orang mengatakan kepada saya bahwa saya telah mengirim mereka file dalam pengkodean yang salah hanya karena seorang editor (np ++ sebagian besar waktu) mengambil tebakan liar. +1
unicoletti
3

Cara sederhana adalah mengonversi file shp ke file csv. Dan gunakan enca atau iconv untuk mendeteksi pengkodean. Saya mencoba dengan file UTF8 dan gb18030 dan berhasil.

Frank gu
sumber
+1 untuk jawaban sebagai cara untuk mengetahui penyandian saat ini. Saya pikir meskipun pertanyaannya adalah mencari lebih untuk apa pengkodean standar akan, jika ada.
Dapatkan Spasial
posting ini juga membahas pertanyaan tentang bagaimana mendeteksi pengkodean: gis.stackexchange.com/questions/12218/…
toms