Alterar a codificação da fonte de dados Shapefile?

9

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 )

Muhammad Faizan Khan
fonte
Você pode dar uma olhada no código do plugin: shapefile_encoding_fixer
Jakob
posso salvar no shapefile através do qgis sem salvar o projeto?
Muhammad Faizan Khan
Você já tentou clicar com o botão direito do mouse em sua camada e usar a Save As...opção?
Joseph
@ Joseph sim cara, claro, eu já mencionei essa resposta no meu post! Eu direciono o arquivo de forma aberta para o projeto qgis e altero sua codificação através do save as, mas quando o abro novamente, ele permanece no sistema (inalterado).
Muhammad Faizan Khan 25/11/16
@ Joseph eu não salvei o projeto qgis, quando eu salvo o projeto qgis e abro o arquivo de forma através dele, ele funciona corretamente!
Muhammad Faizan Khan 25/11/16

Respostas:

13

Na barra de menus, acesse:

Settings > Options > Data Sources > Data source handling

e desmarque a configuração Ignorar declaração de codificação shapefile :

Configuração de codificação

Isso define todas as camadas carregadas no QGIS como codificadas por padrão para UTF-8

Joseph
fonte
11
Obrigado a Joseph, adicionalmente, para futuros usuários, este link também útil hub.qgis.org/issues/13203 . Na verdade, a opção marcada Ignorar declaração de codificação shapefile ignora as configurações do utf-8. ignora o arquivo .cpg.
Muhammad Faizan Khan
@MohammadFaizanKhan - muito bem-vindos e obrigado pelo link :)
Joseph
7

Para recapitular o local diferente em que você pode definir a codificação:

Quando você abre um shapefile: Abrir shp como

Quando você abre um CSV: Adicionar CSV

Quando você salva um arquivo vetorial: Salvar arquivo vetorial como

Nas propriedades da camada:
Propriedades da camada

E, como mencionado por Joseph, você provavelmente deve desmarcar a configuração da declaração de codificação Ignorar shapefile.

Vencedor
fonte
Obrigado victor sua última linha me ajuda muito. hub.qgis.org/issues/13203
Muhammad Faizan Khan
3

Quando você usa Save As ..., é necessário selecionar um nome de arquivo diferente e Add 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 encodingpropriedades 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.

AndreJ
fonte