¿Cambiar la codificación de fuente de datos de Shapefile?

9

Traté de cambiar la única codificación del origen de datos del archivo de forma a través de propiedades y también ¿Cómo codificar archivos de forma de LATIN1 a UTF-8? Pero no lo cambia.

Sin guardar el proyecto QGIS, ¿no puedo cambiar directamente la codificación del origen de datos del archivo de forma?

También probé este código, muestra la codificación de cambio pero cuando abro el archivo de forma nuevamente muestra la misma codificación del sistema anterior:

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

(No estoy guardando el proyecto QGIS, solo accedo y guardo el archivo shape directamente. Cuando guardo el proyecto y hago esta tarea, funciona correctamente )

Muhammad Faizan Khan
fuente
Puede echar un vistazo al código en el complemento: shapefile_encoding_fixer
Jakob
¿Puedo guardar en shapefile a través de qgis sin guardar el proyecto?
Muhammad Faizan Khan
¿Has intentado hacer clic derecho en tu capa y usar la Save As...opción?
Joseph
@Joseph sí, hombre, por supuesto, ¡ya mencioné esa respuesta en mi publicación! Dirijo el archivo de forma abierta al proyecto qgis y cambio su codificación a través de guardar como, pero cuando lo abro de nuevo, vuelve al sistema (sin cambios).
Muhammad Faizan Khan
@Joseph no guardé el proyecto qgis, cuando guardo el proyecto qgis y abro el archivo de forma a través de él, ¡funciona correctamente!
Muhammad Faizan Khan

Respuestas:

13

Desde la barra de menú, vaya a:

Settings > Options > Data Sources > Data source handling

y desmarque la opción Ignorar la configuración de declaración de codificación del archivo de forma :

Configuración de codificación

Esto establece que todas las capas cargadas en QGIS se codifiquen por defecto en UTF-8

José
fuente
1
Gracias a @Joseph, además, por el futuro usuario, este enlace también es útil hub.qgis.org/issues/13203 . En realidad, ignorar la opción marcada de declaración de codificación del archivo de forma ignora la configuración utf-8 es ignorar el archivo .cpg.
Muhammad Faizan Khan
@MohammadFaizanKhan - Muy bienvenido y gracias por el enlace :)
Joseph
7

Para recapitular la ubicación diferente donde puede establecer la codificación:

Cuando abres un archivo shape: Abrir shp como

Cuando abres un CSV: Agregar CSV

Cuando guarda un archivo vectorial: Guardar archivo vectorial como

En las propiedades de la capa:
Propiedades de la capa

Y, como mencionó @Joseph, probablemente debería desmarcar la opción Ignorar la configuración de la declaración de codificación del archivo de forma.

Víctor
fuente
Gracias vencedor, tu última línea me ayudó mucho. hub.qgis.org/issues/13203
Muhammad Faizan Khan
3

Cuando lo use Save As ..., debe seleccionar un nombre de archivo diferente y Add file to canvas.

Como consecuencia, DEBE guardar el proyecto también para obtener el nuevo archivo de forma. El proyecto no guardado todavía incluye el archivo de forma intacto y la codificación incorrecta.

Por cierto, Data encodingen las propiedades de la capa es parte del archivo del proyecto, no el archivo de forma. Su ejemplo de código no escribe nada dentro del archivo de forma, solo cambia la configuración de capa del proyecto.

AndreJ
fuente