Shapefile-Datenquellencodierung ändern?

9

Ich habe versucht, die einzige Codierung der Shapefile-Datenquelle über Eigenschaften zu ändern und auch Wie werden Shapefiles von LATIN1 nach UTF-8 codiert? aber es ändert es nicht.

Kann ich ohne Speichern des QGIS-Projekts die Codierung der Shapefile-Datenquelle nicht direkt ändern?

Ich habe auch diesen Code ausprobiert. Er zeigt die Änderungscodierung an, aber beim erneuten Öffnen des Shapefiles wird dieselbe alte Systemcodierung angezeigt:

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

(Ich speichere kein QGIS-Projekt, sondern greife direkt auf Shapefile zu und speichere es direkt. Wenn ich das Projekt speichere und diese Aufgabe erledige, funktioniert es ordnungsgemäß. )

Muhammad Faizan Khan
quelle
Sie können einen Blick auf den Code im Plugin werfen: shapefile_encoding_fixer
Jakob
Kann ich über qgis in Shapefile speichern, ohne das Projekt zu speichern?
Muhammad Faizan Khan
Haben Sie versucht, mit der rechten Maustaste auf Ihre Ebene zu klicken und die Save As...Option zu verwenden?
Joseph
@ Joseph ja Mann natürlich, ich erwähne diese Antwort bereits in meinem Beitrag! Ich leite die geöffnete Formdatei in das qgis-Projekt und ändere ihre Codierung durch Speichern unter, aber wenn ich sie wieder öffne, bleibt sie im System (unverändert).
Muhammad Faizan Khan
@ Joseph Ich habe das QGIS-Projekt nicht gespeichert. Wenn ich das QGIS-Projekt speichere und die Formdatei darüber öffne, funktioniert es korrekt!
Muhammad Faizan Khan

Antworten:

13

Gehen Sie in der Menüleiste zu:

Settings > Options > Data Sources > Data source handling

und deaktivieren Sie die Einstellung Shapefile-Codierungsdeklaration ignorieren :

Codierungseinstellung

Dadurch werden alle in QGIS geladenen Ebenen so eingestellt, dass sie standardmäßig codiert werden UTF-8

Joseph
quelle
1
Danke @Joseph zusätzlich für zukünftige Benutzer dieser Link auch hilfreich hub.qgis.org/issues/13203 . Die Option Shapefile-Codierungsdeklaration ignorieren, die Option utf-8 ignoriert. seine .cpg-Datei ignorieren.
Muhammad Faizan Khan
@MohammadFaizanKhan - Herzlich willkommen und danke für den Link :)
Joseph
7

So rekapitulieren Sie den verschiedenen Ort, an dem Sie die Codierung festlegen können:

Wenn Sie ein Shapefile öffnen: Öffnen Sie shp as

Wenn Sie eine CSV öffnen: CSV hinzufügen

Wenn Sie eine Vektordatei speichern: Vektordatei speichern unter

In den Ebeneneigenschaften:
Ebeneneigenschaften

Und wie von @Joseph erwähnt, sollten Sie wahrscheinlich die Einstellung Shapefile-Codierungsdeklaration ignorieren deaktivieren.

Sieger
quelle
Vielen Dank, Sieger, deine letzte Zeile hilft mir sehr. hub.qgis.org/issues/13203
Muhammad Faizan Khan
3

Wenn Sie verwenden Save As ..., müssen Sie einen anderen Dateinamen auswählen, und Add file to canvas.

Infolgedessen MÜSSEN Sie auch das Projekt speichern, um das neue Shapefile darin zu erhalten. Das nicht gespeicherte Projekt enthält weiterhin das unberührte Shapefile und die falsche Codierung.

Übrigens ist das Data encodingin den Layer-Eigenschaften Teil der Projektdatei, nicht das Shapefile. Ihr Codebeispiel schreibt nichts in das Shapefile, sondern ändert nur die Ebeneneinstellungen des Projekts.

AndreJ
quelle