Ubah pengkodean sumber data Shapefile?

9

Saya mencoba mengubah satu-satunya sumber data pengkodean shapefile melalui properti dan juga Bagaimana mengkodekan shapefile dari LATIN1 ke UTF-8? tapi itu tidak mengubahnya.

Tanpa menyimpan proyek QGIS saya tidak dapat langsung mengubah pengkodean sumber data shapefile?

Saya juga mencoba kode ini, itu menunjukkan perubahan pengkodean tetapi ketika saya membuka shapefile lagi itu menunjukkan pengkodean sistem lama yang sama:

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    layer.setProviderEncoding(u'UTF-8')
    layer.dataProvider().setEncoding(u'UTF-8')
    print layer.name(), layer.dataProvider().encoding()  

(Saya tidak menyimpan proyek QGIS, hanya mengakses dan menyimpan shapefile secara langsung. Ketika saya menyimpan proyek dan melakukan tugas ini maka itu berfungsi dengan benar )

Muhammad Faizan Khan
sumber
Anda dapat melihat kode di plugin: shapefile_encoding_fixer
Jakob
dapatkah saya menyimpan di shapefile melalui qgis tanpa menyimpan proyek?
Muhammad Faizan Khan
Sudahkah Anda mencoba mengklik kanan layer Anda dan menggunakan Save As...opsi?
Joseph
@ Joseph ya pria tentu saja, saya sudah menyebutkan jawaban itu di posting saya! Saya mengarahkan file bentuk terbuka ke proyek qgis dan mengubah pengkodeannya melalui save as tetapi ketika saya membukanya lagi ia mengirimkannya ke sistem (tidak berubah).
Muhammad Faizan Khan
@ Joseph saya tidak menyimpan proyek qgis, ketika saya menyimpan proyek qgis dan membuka file bentuk melalui itu maka itu berfungsi dengan benar!
Muhammad Faizan Khan

Jawaban:

13

Dari menubar, buka:

Settings > Options > Data Sources > Data source handling

dan hapus centang pengaturan Abaikan pengkodean pengkodean shapefile :

Pengaturan pengkodean

Ini mengatur semua layer yang dimuat ke QGIS menjadi default untuk dikodekan UTF-8

Yusuf
sumber
1
Terima kasih @Joseph sebagai tambahan untuk pengguna di masa depan, tautan ini juga membantu hub.qgis.org/issues/13203 . Sebenarnya Abaikan saja deklarasi pengkodean shapefile yang diperiksa memilih untuk mengabaikan pengaturan utf-8. abaikan file .cpg.
Muhammad Faizan Khan
@MohammadFaizanKhan - Selamat datang dan terima kasih atas tautannya :)
Joseph
7

Untuk merekapitulasi lokasi berbeda tempat Anda dapat mengatur pengodean:

Saat Anda membuka shapefile: Buka shp as

Saat Anda membuka CSV: Tambahkan CSV

Ketika Anda menyimpan file vektor: Simpan file vektor sebagai

Pada properti layer:
Properti lapisan

Dan, seperti yang disebutkan oleh @Joseph, Anda mungkin harus menghapus centang pada pengaturan Deklarasi pengenkodean shapefile Abaikan.

Pemenang
sumber
Terima kasih, kalimat terakhir Anda sangat membantu saya. hub.qgis.org/issues/13203
Muhammad Faizan Khan
3

Ketika Anda menggunakan Save As ..., Anda harus memilih nama file yang berbeda, dan Add file to canvas.

Sebagai akibatnya, Anda HARUS menyimpan proyek juga untuk mendapatkan shapefile baru di dalamnya. Proyek yang belum disimpan masih menyertakan shapefile yang belum tersentuh, dan penyandian yang salah.

BTW Data encodingdalam properti Layer adalah bagian dari file proyek, bukan shapefile. Contoh kode Anda tidak menulis apa pun di dalam shapefile, itu hanya mengubah pengaturan lapisan proyek.

AndreJ
sumber