Я попытался изменить единственную кодировку источника данных шейп-файла через свойства, а также Как кодировать шейп-файлы из LATIN1 в UTF-8? но это не меняет его.
Без сохранения проекта QGIS я не могу напрямую изменить кодировку источника данных shapefile?
Я также попробовал этот код, он показывает кодировку изменений, но когда я снова открываю шейп-файл, он показывает ту же старую кодировку системы:
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, просто получаю доступ и сохраняю шейп-файл напрямую. Когда я сохраняю проект и выполняю эту задачу, он работает правильно )
Save As...
опцию?Ответы:
Из меню перейдите по ссылке:
и снимите флажок с параметром объявления игнорирования кодировки шейп-файла :
Это устанавливает все слои, загруженные в QGIS, для кодирования по умолчанию в
UTF-8
источник
Чтобы перепросмотреть другое место, где вы можете установить кодировку:
Когда вы открываете шейп-файл:
Когда вы открываете CSV:
Когда вы сохраняете векторный файл:
В свойствах слоя:
И, как упоминалось @Joseph, вам, вероятно, следует снять флажок с параметром объявления игнорирования кодировки шейп-файла.
источник
Когда вы используете
Save As ...
, вы должны выбрать другое имя файла, иAdd file to canvas
.Как следствие, вы ДОЛЖНЫ сохранить проект, чтобы получить новый шейп-файл. Несохраненный проект все еще содержит нетронутый шейп-файл и неправильную кодировку.
Кстати,
Data encoding
свойства Layer являются частью файла проекта, а не шейп-файлом. Ваш пример кода ничего не записывает в шейп-файл, он меняет только настройки слоя проекта.источник