Сообщение
MichaelK » 25 май 2015, 15:17
Можно было взять shp с CP1251 и добавить параметр --config SHAPE_ENCODING UTF-8
Дело в том что с версии gdal 1.9 (если не ошибаюсь), разработчики добавили систему внутреннего перекодирования текста.
Текст из драйвера-источника перекодируется в промежуточную кодировку (UTF-8), затем отравляется в драйвер-получатель.
Например: из "ESRI Shapefile" читается cp1251 -> перекодируется в UTF-8 -> отправляется в "Mapinfo File"
Самое интересное тут, что перекодировка реализована не во всех драйверах.
В "ESRI Shapefile" она есть, в "Mapinfo File" и MSSQLSpatial её нет.
Т.е. если вы подаете на вход C:\usr\lesnich.shp, не важно в CP1251 или UTF-8, драйвер MSSQLSpatial все равно получит UTF-8 (ну или то что получилось после попытки прекодировать текст в UTF-8).
Трюк в том, чтобы убедить gdal что у нас уже UTF-8, и тогда не происходит никаких перекодировок и текст отправляется как есть.
У вас сработал такой способ потому что в "Mapinfo File" и MSSQLSpatial нет никаких перекодировок и текст отправился как есть.