Changer le codage de la source de données Shapefile?

9

J'ai essayé de changer le seul codage de la source de données du fichier de formes via les propriétés et aussi Comment coder les fichiers de formes de LATIN1 en UTF-8? mais cela ne change rien.

Sans enregistrer le projet QGIS, ne puis-je pas modifier directement l'encodage de la source de données du fichier de formes?

J'ai également essayé ce code, il montre le changement d'encodage mais lorsque j'ouvre à nouveau le fichier de formes, il montre le même ancien encodage système:

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

(Je ne sauvegarde pas le projet QGIS, j'accède et enregistre directement le fichier de formes directement. Lorsque j'enregistre le projet et que je fais cette tâche, cela fonctionne correctement )

Muhammad Faizan Khan
la source
Vous pouvez jeter un oeil au code dans le plugin: shapefile_encoding_fixer
Jakob
puis-je enregistrer dans le fichier de formes via qgis sans enregistrer le projet?
Muhammad Faizan Khan
Avez-vous essayé de cliquer avec le bouton droit sur votre couche et d'utiliser l' Save As...option?
Joseph
@Joseph yes man off course, je mentionne déjà cette réponse dans mon post! Je dirige le fichier de forme ouvert dans le projet qgis et change son encodage via save as mais comme je l'ouvre à nouveau, il reste dans le système (inchangé).
Muhammad Faizan Khan
@Joseph je n'ai pas enregistré le projet qgis, lorsque j'enregistre le projet qgis et que j'ouvre le fichier de forme à travers, alors cela fonctionne correctement!
Muhammad Faizan Khan

Réponses:

13

Depuis la barre de menus, accédez à:

Settings > Options > Data Sources > Data source handling

et décochez le paramètre Ignore shapefile encoding declaration :

Paramètre d'encodage

Ceci définit toutes les couches chargées dans QGIS pour être encodées par défaut en UTF-8

Joseph
la source
1
Merci également à @Joseph pour le futur utilisateur. Ce lien est également utile hub.qgis.org/issues/13203 . En fait, l'option Ignorer la déclaration de codage du fichier de formes cochée ignore les paramètres utf-8. son fichier .cpg ignorer.
Muhammad Faizan Khan
@MohammadFaizanKhan - Bienvenue et merci pour le lien :)
Joseph
7

Pour récapituler les différents emplacements où vous pouvez définir l'encodage:

Lorsque vous ouvrez un fichier de formes: Ouvrir shp as

Lorsque vous ouvrez un CSV: Ajouter CSV

Lorsque vous enregistrez un fichier vectoriel: Enregistrer le fichier vectoriel sous

Dans les propriétés du calque:
Propriétés du calque

Et, comme mentionné par @Joseph, vous devriez probablement décocher le paramètre de déclaration de codage Ignore shapefile.

Victor
la source
Merci victor ta dernière ligne m'aide beaucoup. hub.qgis.org/issues/13203
Muhammad Faizan Khan
3

Lorsque vous utilisez Save As ..., vous devez sélectionner un nom de fichier différent, et Add file to canvas.

Par conséquent, vous DEVEZ également enregistrer le projet pour y insérer le nouveau fichier de formes. Le projet non enregistré comprend toujours le fichier de formes intact et le mauvais encodage.

BTW Data encodingdans les propriétés de la couche fait partie du fichier de projet, pas du fichier de formes. Votre exemple de code n'écrit rien dans le fichier de formes, il modifie uniquement les paramètres de calque du projet.

AndreJ
la source