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 )
Save As...
opsi?Jawaban:
Dari menubar, buka:
dan hapus centang pengaturan Abaikan pengkodean pengkodean shapefile :
Ini mengatur semua layer yang dimuat ke QGIS menjadi default untuk dikodekan
UTF-8
sumber
Untuk merekapitulasi lokasi berbeda tempat Anda dapat mengatur pengodean:
Saat Anda membuka shapefile:
Saat Anda membuka CSV:
Ketika Anda menyimpan file vektor:
Pada properti layer:
Dan, seperti yang disebutkan oleh @Joseph, Anda mungkin harus menghapus centang pada pengaturan Deklarasi pengenkodean shapefile Abaikan.
sumber
Ketika Anda menggunakan
Save As ...
, Anda harus memilih nama file yang berbeda, danAdd 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 encoding
dalam 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.sumber