Страница 1 из 1
ogr2ogr проблемы c русскими символами в MS SQL Server
Добавлено: 20 май 2015, 12:21
Филиппов Владислав
Доброго дня.
Нужно загрузить данные из шейпа в БД MS SQL Server 2008.
БД эта имеет кодировку Cyrillic_General_CI_AS
Использовал исходный шейп как в UTF-8 так и в CP1251. Русских символов в БД не имею.
есть файлик lesnich.cpg и в нём строчка UTF-8.
Пробовал параметры
Regional и AutoTranslate
Код: Выделить всё
ogr2ogr -overwrite -skipfailures -f MSSQLSpatial "MSSQL:server=SRV\SQL2008;database=ForGis;trusted_connection=yes;Regional=yes" "C:\usr\lesnich.shp" -a_srs EPSG:4326 -lco PRECISION=FALSE --config CPL_DEBUG ON
Запускаю всё в OSGeo4W От QGIS 2.8.2
Что делаю не так?
Re: ogr2ogr проблемы c русскими символами в MS SQL Server
Добавлено: 20 май 2015, 12:35
paleogis
Я чайник в этих вопросах, но попробовал бы загрузить SHP на винде с русской локалью.
Re: ogr2ogr проблемы c русскими символами в MS SQL Server
Добавлено: 20 май 2015, 13:07
Филиппов Владислав
победа! аж сам не ожидал. реально часа 4 гуглил...
лучше всего подходит формат MID/MIF в кодировке CP1251
Код: Выделить всё
ogr2ogr -overwrite -skipfailures -f MSSQLSpatial "MSSQL:server=SRV\SQL2008;database=ForGis;trusted_connection=yes;Regional=yes" "C:\usr\lesnich.mif" -a_srs EPSG:4326 -lco PRECISION=FALSE --config CPL_DEBUG ON
Re: ogr2ogr проблемы c русскими символами в MS SQL Server
Добавлено: 25 май 2015, 15:17
MichaelK
Можно было взять 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 нет никаких перекодировок и текст отправился как есть.