проблемы с кодировкой

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

Re: проблемы с кодировкой

Сообщение bolotoved » 17 сен 2013, 07:36

В шейп-файлах нет полноценной поддержки unicode, по этой причине постоянно возникают проблемы с кодировками, причем вызваны очень разными причинами.
В какой кодировке у вас находятся исходные файлы (при открытии в какой кодировке они адекватно отображаются в QGIS?). Наверное, стоит попробывать открыть результирующий файл в той же кодировке.

Если не получится, приложите небольшой фрагмент результирующего файла.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: проблемы с кодировкой

Сообщение Александр Мурый » 17 сен 2013, 11:54

Кодировка файлов проекта не связана с кодировками атрибутивных данных в шейпах. Ваши атрибуты точно имеют одинаковую кодировку и это точно UTF-8? Выложите шейпы или их части, если возможно, чтоб посмотреть.
Редактор материалов, модератор форума

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: проблемы с кодировкой

Сообщение Александр Мурый » 17 сен 2013, 17:45

В атрибутах этого шейпа известная проблема с кодировкой под названием "Doubly-encoded to UTF-8 from ***", в данном случае, "Doubly-encoded to UTF-8 from CP1251".
Надо смотреть на исходные шейпы, с их таблицами тоже может быть что-то не так.

Частичное решение:
- пересохранить в CSV:

Код: Выделить всё

ogr2ogr -f "CSV" house.csv house.dbf
- натравить на CSV iconv и sed (sed для замены пропущенных символов)

Код: Выделить всё

cat house.csv | iconv -f utf8 -c -t cp1251//TRANSLIT | iconv -f utf8 -c -t cp1251 | iconv -f cp1251 -c -t utf-8 | sed 's/?/И/g'  > house2.csv
- перегнать назад в DBF:

Код: Выделить всё

ogr2ogr house2.dbf house2.csv -lco 'ENCODING=UTF-8'
Новый DBF будет в нормальном UTF-8.
Редактор материалов, модератор форума

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: проблемы с кодировкой

Сообщение Александр Мурый » 18 сен 2013, 12:54

Nariman писал(а): это нормально??? в какой папке создается csv файл?
Нормально, предупреждения о геометрии здесь можно игнорировать, нам нужны атрибуты. CSV создаётся в текущем каталоге, но не запрещается указать такой путь, какой хочется :)
В приложенном архиве house2.tar.gz только один шейп, а объединялись, наверное, минимум два?
Редактор материалов, модератор форума

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: проблемы с кодировкой

Сообщение Александр Мурый » 18 сен 2013, 13:37

У меня объединение двух идентичных шейпов прошло нормально, атрибуты в UTF-8 показываются.
Редактор материалов, модератор форума

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: проблемы с кодировкой

Сообщение Александр Мурый » 18 сен 2013, 13:44

Nariman писал(а):а у вас версия qgis какая??
Самосборная 2.1.0-master.
Редактор материалов, модератор форума

HasT
Активный участник
Сообщения: 142
Зарегистрирован: 16 окт 2009, 22:08
Репутация: 55
Откуда: Харьков

Re: проблемы с кодировкой

Сообщение HasT » 18 сен 2013, 14:24

Попробуйте для исправления кодировки использовать плагин Fix Shapefile Encoding (доступен для 1.8.0 / 2.1.0).
Проверил в 1.8.0 следующим образом: добавил шейп-файл в QGIS перемещением из каталога в окно программы (кодировка в табл. атр. неправильно отображается), выбрал шейп-файл в TOC и запустил плагин Fix Shapefile Encoding (выбрал SET CPG file (UTF-8)) - атрибуты в табл. атр. правильно отображаются (в каталоге с шейп-файлом создался cpg файл), для проверки объединения продублировал в каталоге шейп-файл с добавленным файлом кодировки, запустил Объединение шейп файлов; отметил опцию "Добавить на карту" при выполнении объединения шейп-файлов. После выполнения объединения в шейп-файле кодировка неправильная; для исправления запустил плагин Fix Shapefile Encoding (выбрал Clear LDID and delete CPG file) - атрибуты отображаются в табл. атр. правильно.

Аватара пользователя
gimran
Гуру
Сообщения: 1902
Зарегистрирован: 07 июл 2010, 15:43
Репутация: 242
Откуда: Уфа

Re: проблемы с кодировкой

Сообщение gimran » 18 сен 2013, 14:35

А какой принцип работы Fix Shapefile Encoding?

HasT
Активный участник
Сообщения: 142
Зарегистрирован: 16 окт 2009, 22:08
Репутация: 55
Откуда: Харьков

Re: проблемы с кодировкой

Сообщение HasT » 18 сен 2013, 15:05

gimran писал(а):А какой принцип работы Fix Shapefile Encoding?
"Clearing LDID byte and removing CPG file will disable encoding autodetection. Exactly like in older QGIS versions, you will be able to use the drop-down list in the Add Vector Layer window to choose the layer encoding.
The LDID byte of dbf file declares the codepage of attribute table. Please note the LDID byte doesn't support other encodings, especially UTF-8. Setting LDID byte will automatically remove the concurrent CPG file, if exists.
CPG is a small additional file for Shapefile. It's an alternative for LDID byte, and it supports much more encodings. Creating CPG file will automatically clear the concurrent LDID byte, if set.
NOTE: With this tool you can set or clear attribute table encoding declaration for Shapefiles. It doesn't change the real data encoding though."

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость