Próbowałem zmienić jedyne kodowanie źródła danych shapefile za pomocą właściwości, a także Jak kodować pliki shapefile z LATIN1 na UTF-8? ale to nie zmienia.
Czy bez zapisania projektu QGIS nie mogę bezpośrednio zmienić kodowania źródła danych shapefile?
Próbowałem również tego kodu, pokazuje zmianę kodowania, ale kiedy ponownie otwieram plik kształtu, pokazuje to samo stare kodowanie systemowe:
for layer in QgsMapLayerRegistry.instance().mapLayers().values():
layer.setProviderEncoding(u'UTF-8')
layer.dataProvider().setEncoding(u'UTF-8')
print layer.name(), layer.dataProvider().encoding()
(Nie zapisuję projektu QGIS, po prostu uzyskuję bezpośredni dostęp do pliku shapefile i zapisuję go . Kiedy zapisuję projekt i wykonuję to zadanie, to działa poprawnie )
Save As...
opcji?Odpowiedzi:
Z paska menu przejdź do:
i odznacz ustawienie Zignoruj deklarację kodowania pliku kształtu :
To powoduje, że wszystkie warstwy załadowane do QGIS są domyślnie zakodowane
UTF-8
źródło
Aby podsumować inną lokalizację, w której można ustawić kodowanie:
Po otwarciu pliku kształtu:
Po otwarciu pliku CSV:
Podczas zapisywania pliku wektorowego:
We właściwościach warstwy:
I, jak wspomniano w @Joseph, prawdopodobnie powinieneś odznaczyć ustawienie Zignoruj ustawienie deklaracji kodowania pliku shapefile.
źródło
Kiedy używasz
Save As ...
, musisz wybrać inną nazwę pliku iAdd file to canvas
.W związku z tym MUSISZ zapisać projekt, aby umieścić w nim nowy plik kształtu. Niezapisany projekt nadal zawiera nietknięty plik kształtu i nieprawidłowe kodowanie.
BTW
Data encoding
we właściwościach warstwy jest częścią pliku projektu, a nie pliku kształtu. Twój przykładowy kod nie pisze nic w pliku kształtu, zmienia tylko ustawienia warstw projektu.źródło