bolotoved писал(а):Да, совершенно верно, в случае с шейпами GDAL не знает в какой он кодировке и поэтому вначале нужно указать исходную кодировку перед тем как перекодировать.
В linux это делается так:
Код: Выделить всё
# устанавливаем исходную кодировку
export SHAPE_ENCODING="windows-1251"
# перекодируем в нужную
ogr2ogr output.shp input.shp -lco ENCODING=UTF-8
В Windows, наверное, нужно использовать:
Еще может возникнуть проблема обрезания строки (поскольку в UTF-8 кириллические буквы кодируются 2-мя байтами, а не одним, как в CP-1251). Этого может и не произойти, если длина строчного поля в шейпе с запасом.
Пробовал много вариантов:
SET SHAPE_ENICODING = "1251"
SET SHAPE_ENICODING = "windows-1251"
SET SHAPE_ENICODING = "CP1251"
В итоге тоже самое.
Поиском по форуму нашел такой способ:
1. Создать текстовый файл input.cpg и записать в него кодировку:
CP1251
2. Выполнить команду ogr2ogr -lco ENCODING=UTF8 output.shp input.shp --config CPL_DEBUG ON
Опять же не получилось, но кракозябры другие, и если файлик dbf открыть DBFNavigator-ом и сменить там кодировку с DOS на Win, то все замечательно.
Не знаю что и делать уже, все голову сломал
Ваш способ тоже пробовал ogr2ogr output.shp input.shp -lco ENCODING=UTF-8