Змінити кодування джерела даних Shapefile?


9

Я намагався змінити єдине кодування джерел даних формфайлу за допомогою властивостей, а також Як кодувати файли форм з LATIN1 на UTF-8? але це не змінює.

Без збереження проекту QGIS я не можу безпосередньо змінити кодування джерела даних форм-файлу?

Я також спробував цей код, він показує кодування зміни, але, коли я знову відкриваю файл форми, він показує те саме старе кодування системи:

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

(Я не зберігаю проект QGIS, просто отримую доступ та зберігаю форму файлів безпосередньо. Коли я зберігаю проект і виконую це завдання, то він працює правильно )


Ви можете подивитися на код у плагіні: shapefile_encoding_fixer
Jakob

Чи можу я зберегти у shapefile через qgis, не зберігаючи проект?
Мухаммед Файзан Хан

Ви спробували клацнути правою кнопкою миші ваш шар і скористалися Save As...опцією?
Йосиф

@ Джозеф, так, людина, звичайно, я вже згадую цю відповідь у своєму пості! Я спрямовую файл відкритої форми в проект qgis і змінюю його кодування через save as, але коли я знову відкриваю його, він залишається в системі (без змін).
Мухаммад Файзан Хан

@Joseph Я не врятував qgis проект, коли я зберігаю qgis проект і відкриваю файл форми через нього, то він працює правильно!
Мухаммед Файзан Хан

Відповіді:


13

Із меню меню перейдіть до:

Settings > Options > Data Sources > Data source handling

і зніміть прапорець Ігнорувати параметр декларації кодування коду файлу :

Налаштування кодування

Це встановлює всі шари, завантажені в QGIS, за замовчуванням UTF-8


1
Дякую @Joseph додатково для майбутнього користувача, це посилання також корисно hub.qgis.org/isissue/13203 . Фактично Ігноруйте перевірену опцію кодування формфайлу, ігноруйте параметр utf-8. його ігнорувати .cpg файл.
Мухаммед Файзан Хан

@MohammadFaizanKhan - Вітаю і дякую за посилання :)
Джозеф

7

Щоб перевказати в інше місце, де ви можете встановити кодування:

Відкриваючи файл форми: Відкрити shp як

Відкриваючи CSV: Додати CSV

Коли ви зберігаєте векторний файл: Збережіть векторний файл як

В властивостях шару:
Властивості шару

І, як згадував @Joseph, вам, ймовірно, слід зняти прапорець з параметрами декларації кодування коду кодування файлу Ігнорувати.


Дякую переможець, що ваш останній рядок дуже мені допомагає. hub.qgis.org/isissue/13203
Мухаммед

3

Під час використання Save As ...потрібно вибрати інше ім'я файлу та Add file to canvas.

Як наслідок, Ви ОБОВ'ЯЗКОВО зберегти проект, щоб отримати в ньому новий файл форми. Незбережений проект все ще включає недоторканий файл форми та неправильне кодування.

До речі, Data encodingвластивості шару є частиною файлу проекту, а не файлом форми. Ваш приклад коду нічого не пише всередині файлу форм, він змінює лише налаштування шару проекту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.