Cambia la codifica dell'origine dati Shapefile?


9

Ho provato a modificare la sola codifica dell'origine dati dello shapefile attraverso le proprietà e anche Come codificare gli shapefile da LATIN1 a UTF-8? ma non lo cambia.

Senza salvare il progetto QGIS non posso modificare direttamente la codifica dell'origine dati shapefile?

Ho anche provato questo codice, mostra la modifica della codifica ma quando apro di nuovo lo shapefile mostra la stessa vecchia codifica di sistema:

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

(Non sto salvando il progetto QGIS, sto solo accedendo e salvando direttamente lo shapefile. Quando salvo il progetto e faccio questa operazione, allora funziona correttamente )


Puoi dare un'occhiata al codice nel plugin: shapefile_encoding_fixer
Jakob

posso salvare in shapefile tramite qgis senza salvare il progetto?
Muhammad Faizan Khan,

Hai provato a fare clic con il pulsante destro del mouse sul livello e utilizzando l' Save As...opzione?
Joseph,

@Joseph sì amico ovviamente, ho già menzionato quella risposta nel mio post! Dirigo il file di forma aperto nel progetto qgis e cambio la sua codifica tramite il salvataggio come ma mentre lo riapro rimanendo al sistema (invariato).
Muhammad Faizan Khan,

@Joseph non ho salvato il progetto qgis, quando salvo il progetto qgis e apro il file di forma attraverso di esso, allora funziona correttamente!
Muhammad Faizan Khan,

Risposte:


13

Dalla barra dei menu, vai a:

Settings > Options > Data Sources > Data source handling

e deseleziona l' impostazione Ignora dichiarazione di codifica della forma di file :

Impostazione di codifica

In questo modo tutti i layer caricati in QGIS devono essere codificati per impostazione predefinita UTF-8


1
Grazie anche a @Joseph per il futuro utente questo link è utile anche hub.qgis.org/issues/13203 . In realtà ignora l'opzione selezionata per la dichiarazione di codifica dello shapefile ignora le impostazioni utf-8. il suo ignora il file .cpg.
Muhammad Faizan Khan,

@MohammadFaizanKhan - Molto gradito e grazie per il link :)
Joseph,

7

Per ricapitolare la diversa posizione in cui è possibile impostare la codifica:

Quando apri uno shapefile: Apri shp come

Quando apri un CSV: Aggiungi CSV

Quando si salva un file vettoriale: Salva file vettoriale come

Nelle proprietà del livello:
Proprietà del livello

E, come menzionato da @Joseph, dovresti probabilmente deselezionare l'impostazione Ignora la dichiarazione di codifica della forma di file.


Grazie vincitore, la tua ultima riga mi aiuta molto. hub.qgis.org/issues/13203
Muhammad Faizan Khan

3

Quando si utilizza Save As ..., è necessario selezionare un nome file diverso e Add file to canvas.

Di conseguenza, DEVI salvare anche il progetto per ottenere il nuovo shapefile. Il progetto non salvato include ancora lo shapefile non trattato e la codifica errata.

A proposito, Data encodingnelle proprietà Layer fa parte del file di progetto, non lo shapefile. Il tuo esempio di codice non scrive nulla all'interno del file di forma, ma modifica solo le impostazioni del livello del progetto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.