Доброго дня.
Нужно загрузить данные из шейпа в БД MS SQL Server 2008.
БД эта имеет кодировку Cyrillic_General_CI_AS
Использовал исходный шейп как в UTF-8 так и в CP1251. Русских символов в БД не имею.
есть файлик lesnich.cpg и в нём строчка UTF-8.
Пробовал параметры Regional и AutoTranslate
Можно было взять 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 нет никаких перекодировок и текст отправился как есть.