Страница 1 из 2

1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 21 фев 2012, 16:05
SS_Rebelious
Только что обновился до 1.7.4. Не важно, какая кодировка указывается при открытии слоя, в свойствах слоя выставляется UTF-8. При попытке выставить нужную кодировку в свойствах слоя, она всё-равно сбрасывается на UTF-8.

openSUSE

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 21 фев 2012, 16:12
rhot
Только что хотел обновиться с 1.7.3 до 1.7.4. Не буду пока :)

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 21 фев 2012, 16:47
Voltron
SS_Rebelious писал(а):Только что обновился до 1.7.4. Не важно, какая кодировка указывается при открытии слоя, в свойствах слоя выставляется UTF-8. При попытке выставить нужную кодировку в свойствах слоя, она всё-равно сбрасывается на UTF-8.
А теперь версию GDAL в студию. Мои скромные способности телепата говорят, что используется GDAL 1.9.0. Если это так, то претензии не совсем по адресу.

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 21 фев 2012, 16:50
Voltron
Да, не подтверждаю на Windows и Linux.

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 21 фев 2012, 16:55
rhot
у меня вообще версия gdal 1.8.0
=D

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 21 фев 2012, 17:02
Voltron
rhot писал(а):у меня вообще версия gdal 1.8.0
Ну и обновляйтесь себе. Нет там таких ужасов.

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 10 мар 2012, 00:05
SS_Rebelious
Извиняюсь, что выпал на какое-то время из дискуссии.

Voltron, ты в своём блоге пишешь про GDAL 1.9:
Еще одним шагом стала реализация перекодирования атрибутов shape-файла в UTF-8 при чтении, и из UTF-8 при записи. Только вот... кодировка определяется путем считывания LDID (Language Driver ID) из заголовка DBF. Вобщем-то это правильный подход, только что-то я не припомню когда в последний раз видел шейпы с корректно указанной кодировкой.
Мои шейпы создавались в QGIS, отсюда я могу сделать вывод, что некорректная работа с кодировкой возникла в результате того, что QGIS не записал тип кодировки в заголовок dbf. Если так, то наверное следует переименовать топик в "QGIS не подписывает тип кодировки shp-файла"?

Мне, как не программисту не очевидна односторонняя вина GDAL. С точки зрения простого пользователя это QGIS не адаптировался к новой версии GDAL: ведь, нет никаких предупреждений или сообщений о возможных ошибках при работе в связке QGIS и GDAL 1.9... Официально нигде не говорится, что для адекватной работы QGIS надо использовать GDAL не новее 1.8.1...

А вообще, я был бы очень признателен небольшому разъяснению о будущем взаимодействии QGIS и GDAL>1.9 по части работы с кодировками: сколько месяцев уйдёт на утряску и будет ли эта проблема решена (решается ли она)? Или 1.8.1 - последний релиз GDAL, который будет адекватно работать с кодировкой?

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 10 мар 2012, 11:34
Voltron
SS_Rebelious писал(а):Мои шейпы создавались в QGIS, отсюда я могу сделать вывод, что некорректная работа с кодировкой возникла в результате того, что QGIS не записал тип кодировки в заголовок dbf. Если так, то наверное следует переименовать топик в "QGIS не подписывает тип кодировки shp-файла"?
Да, QGIS не пишет LDID в DBF при создании шейпа, об этом уже сообщали в #4343. Закрыть баг можно, но проблему это решит только частично (об этом ниже). GDAL же по умолчанию пишет LDID/87 (Default), хотя ИМХО логичнее было бы писать системную кодировку.
SS_Rebelious писал(а):Мне, как не программисту не очевидна односторонняя вина GDAL. С точки зрения простого пользователя это QGIS не адаптировался к новой версии GDAL: ведь, нет никаких предупреждений или сообщений о возможных ошибках при работе в связке QGIS и GDAL 1.9... Официально нигде не говорится, что для адекватной работы QGIS надо использовать GDAL не новее 1.8.1...
Так проблем со связкой QGIS + GDAL 1.9 нет, если DBF содержит правильный LDID или если используется кодировка Latin-1.

Вообще, здесь есть несколько интересных вопросов.
  1. когда создавался стандарт DBF про unicode во всех его проявлениях никто не слышал и даже не предполагал, что когда-нибудь нечто такое появится. Поэтому среди существующих кодов LDID utf-8 просто нет и уже врядли будет. Именно по этой причине, исправление #4343 решит проблему лишь отчасти.
  2. выходом могло бы быть использование файлов .cpg, в которых указывается кодировка атрибутивных данных. НО! В GDAL по каким-то причинам поддержки .cpg нет и, судя по всему, не предвидится. Лично мне это кажется неправильным.
  3. поддержку файлов .cpg можно реализовать уровнем выше, в той же QGIS (насколько понял, именно на это надо и ориентироваться, хотя, опять же ИМХО, это не правильно). Правда, здесь возникает вопрос приоритетов: что важнее LDID или .cpg?
  4. создание .cpg надо предусмотреть и при сохранении shape-файлов
SS_Rebelious писал(а):А вообще, я был бы очень признателен небольшому разъяснению о будущем взаимодействии QGIS и GDAL>1.9 по части работы с кодировками: сколько месяцев уйдёт на утряску и будет ли эта проблема решена (решается ли она)? Или 1.8.1 - последний релиз GDAL, который будет адекватно работать с кодировкой?
Нострадамус из меня неважный :-). Могу сказать только, что когда-нибудь проблема будет решена. Скорее всего, это случится после перехода OSGeo4W на GDAL 1.9, когда многие пользователи столкнутся с данной проблемой и поднимется шум. Пару раз я сам думал покопаться во всем этом и попробовать исправить, но руки так и не дошли. Если ничего срочного не свалится, попробую все же заняться. Если это случится, возможно, исправление появится чуть быстрее.

В качестве временного костыля можно принудительно указывать GDAL кодировку шейпов через переменную SHAPE_ENCODING

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 10 мар 2012, 15:40
SS_Rebelious
Спасибо за разъяснения!
Немного поэкспериментировав, выяснил, что shp-файлы, имеющие .cpg с правильно указанной кодировкой работают нормально. Кажется, самое простое решение - создание .cpg при создании нового shp-файла, а также принудительное создание .cgp при открытии шейпа у которого .cgp отсутствует (на основании LDID (если есть) или сведений о кодировке, предоставляемых пользователем в диалоге открытия слоя ).

Что касается приоритетов LDID и .cpg, то я предлагаю следующее:
1. Переделать диалог открытия слоя таким образом, что если кодировка файла указана в либо в LDID либо в .cpg, то у пользователя не было бы нужды выбирать кодировку вручную, а в выпадающем списке сразу выставлялась бы нужная, и сообщалось бы (рядом с выпадающим списком кодировки) на основе чего выставлена такая кодировка.
2. Если есть и LDID, и .cpg и в них указаны разные кодировки, то выдавалось бы предупреждение, что кодировка LDID не совпадает с кодировкой, указанной в .cpg (и указывалось бы, какая кодировка где указана). Тогда не имеет значения, какая из кодировок выставится по умолчанию - пользователь будет знать, что если не подошла одна - он выберет другую. В свойствах слоя в этом случае можно было бы добавить опцию перезаписать LDID/.cgp в соответствии со значением, выбранным пользователем при открытии файла.

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 28 мар 2012, 16:29
croga
Проблема все еще остается..
Печаль :(

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 28 мар 2012, 16:49
Voltron
Логично, ведь этим никто не занимался.

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 24 апр 2012, 02:43
bolotoved
Давно не имел дело с кириллицей в атрибутах, а тут срочно понадобилось и вот я в тут :(

А что прописывать в *.cpg если шейпа создавались в QGIS под Windows и стояла кодировка CP-1251?
Пробовал писать:
CP-1251
CP 1251
1251
CP1251
Так ничего и не добился.

(QGIS-1.9.90, GDAL 1.9, Win XP)

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 24 апр 2012, 03:04
SS_Rebelious
bolotoved писал(а):А что прописывать в *.cpg
попробуй: Windows-1251

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 24 апр 2012, 03:15
bolotoved
Не хочет ни в каком варианте:
windows-1251
windows 1251
Windows-1251
Windows 1251

Re: 1.7.4 - слои открываются только в кодировке UTF-8

Добавлено: 27 апр 2012, 13:18
beard
Только что обновился до 1.7.4. Не важно, какая кодировка указывается при открытии слоя, в свойствах слоя выставляется UTF-8. При попытке выставить нужную кодировку в свойствах слоя, она всё-равно сбрасывается на UTF-8.
Работаю с QGIS несколько месяцев в Linux и Windows. В Linux Mint 9 все нормально, а в Windows 7 после последнего обновления в слоях только UTF-8. Над картами работало несколько человек (у всех Windows 7), а теперь работа стоит.
Может быть уже решил кто-нибудь проблему?
Установка из OSGeo4W даже откатить версию не дает...
Замечено:
При создании нового слоя в 1251 имя объекта появляется, но если перезапустить программу или отключить-подключить слой, кодировка слоя возвращается в UTF-8.

Версия QGIS 1.9.90-Alpha Ревизия 5b2ef2b

28.04.2012
Параллельно с 1.9.9 поставили 1.7.1 (сохранился дистрибутив), Кодировка системная нормальная...