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 )
Save As...
option?Réponses:
Depuis la barre de menus, accédez à:
et décochez le paramètre Ignore shapefile encoding declaration :
Ceci définit toutes les couches chargées dans QGIS pour être encodées par défaut en
UTF-8
la source
Pour récapituler les différents emplacements où vous pouvez définir l'encodage:
Lorsque vous ouvrez un fichier de formes:
Lorsque vous ouvrez un CSV:
Lorsque vous enregistrez un fichier vectoriel:
Dans les 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.
la source
Lorsque vous utilisez
Save As ...
, vous devez sélectionner un nom de fichier différent, etAdd 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 encoding
dans 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.la source