Tentei alterar a única fonte de dados shapefile que codifica através das propriedades e também Como codificar shapefiles de LATIN1 para UTF-8? mas isso não muda.
Sem salvar o projeto QGIS, não posso alterar diretamente a codificação da fonte de dados shapefile?
Eu também tentei esse código, ele mostra a codificação de alteração, mas quando abro o shapefile novamente, ele mostra a mesma codificação de sistema antiga:
for layer in QgsMapLayerRegistry.instance().mapLayers().values():
layer.setProviderEncoding(u'UTF-8')
layer.dataProvider().setEncoding(u'UTF-8')
print layer.name(), layer.dataProvider().encoding()
(Não estou salvando o projeto QGIS, apenas acessando e salvando o shapefile diretamente. Quando eu salvo o projeto e faço essa tarefa, ele funciona corretamente )
Save As...
opção?Respostas:
Na barra de menus, acesse:
e desmarque a configuração Ignorar declaração de codificação shapefile :
Isso define todas as camadas carregadas no QGIS como codificadas por padrão para
UTF-8
fonte
Para recapitular o local diferente em que você pode definir a codificação:
Quando você abre um shapefile:
Quando você abre um CSV:
Quando você salva um arquivo vetorial:
Nas propriedades da camada:
E, como mencionado por Joseph, você provavelmente deve desmarcar a configuração da declaração de codificação Ignorar shapefile.
fonte
Quando você usa
Save As ...
, é necessário selecionar um nome de arquivo diferente eAdd file to canvas
.Como conseqüência, você DEVE salvar o projeto também para obter o novo shapefile. O projeto não salvo ainda inclui o shapefile intocado e a codificação incorreta.
Aliás, as
Data encoding
propriedades na camada fazem parte do arquivo do projeto, não do shapefile. Seu exemplo de código não escreve nada dentro do shapefile, ele altera apenas as configurações de camada do projeto.fonte