Кодировка

0 голосов
спросил 18 Апр, 03 от Erkesh (1,080 баллов) в категории Программные продукты Esri
При конвертации класса данных в шейп-файл командой sde2shp названия полей и их данные, если они набраны по-русски искажаются. Пробовали полученные dbf-файлы открывать в foxpro - результат тот же. Данные, набранные по-русски искажаются даже, если название поля - в латиннице.
Как обойти проблему?

6 Ответы

0 голосов
ответил 21 Апр, 03 от Гость (210,080 баллов)
установить переменную окружения NLS_LANG
0 голосов
ответил 21 Апр, 03 от Erkesh (1,080 баллов)
Команды: >telnet <имя хоста> >set nls_lang=american_america.cl8mswin1251 >sde2shp -o init -l sde.astana_areas,shape -f c:\sde_imp\astana_areas.shp -t polygon -u sde не привели к желаемому результату. Названия полей и данные все в той же - "псевдографике". Не помогает и russian_cis.cl8mswin1251, и изменение имени файла на формат 8.3 (areas.shp). Еще есть идеи?
0 голосов
ответил 22 Апр, 03 от igorstr (6,660 баллов)
1. Обычно sde2shp выкидывает данные в виндовой кодировке. Если таблички потом в экселе смотрет, то крякозябры вылезут - он-то считает, что все dbf в досовской кодировке.
2. Телнетом к виндам - это конечно круто. Но я не уверен, что при этом все должно работать правильно. Лучше так - установить SDE на локальный комп, постинсталяцию не делать. И запускать все команды с локального компа. Ессно, на локальном компе в системных переменных должна быть nls_lang=american_america.cl8mswin1251.
3. Давным-давно, когда еще ArcSDE называлось SDE и версии были 2.х, 3.х были подобные заморочки. (В последние 4-5 лет я с ними не всречался). Какие бы nls_lang не стояли пре загрузке и выгрузке данные корежились. Решалось это удалением всех *.txt, кроме 1251.xtx из папки codepage (сейчас - из C:\arcgis\ArcSDE\ora9iexe\locale\codepage).
4. Если операции производить на сервере, то переменная nls_lang уже должна сидеть в реестре (HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0), обычно на виндах после установки она равна  russian_cis.cl8mswin1251, что доставляет массу неудобств при работе с командной строкой, я ее меняю на american_america.cl8mswin1251. Для того, чтобы все приложения воспринимали эту переменную, ее лучше прописать в окружение, в системные (НЕ ПОЛЬЗОВАТЕЛЬСКИЕ) переменные. Так вот, если операции производить на сервере непосредственно (не через телнет, ведь ко всему прочему дырка это в системе безопасности), то все должно быть правильно.
5. Для загрузки и выгрузки есть ArcCatalog. (Через него-то нормально?).
6. Уверены ли вы, что база ваша в cl8mswin1251?
7. Киньте мне на мейл скриншоты исходного материала и результата.
0 голосов
ответил 23 Апр, 03 от igorstr (6,660 баллов)
Я тут распинался, а сам попробовал ... и сел в лужу, посыпаю голову пеплом. Но все-таки мы (с Гришей Кувшинниковым) разобрались.
1. Когда идет работа из командной строки ПЕРЕКОДИРОВКА данных идет в соответствии с установками переменной окружения NLS_LANG, то есть если ее установить равной RUSSIAN_CIS.RU8PC866 (хоть в том же командном окне), то ДАННЫЕ будут перекодироваться в (sde2shp) 866 кодировку. В этом случае и Excel, ArcView3, ArcGIS будут видеть нормальную кирилицу, поскольку в ЗАГОЛОВКЕ прописано, что кодовая сраница файла (берется кодовая сраница командной строки, OEMCP в реестре) равна 866. Никакими установками переменных заставить прописывать в заколовке другую информацию не удалось.
2 Поменять информацию в заголовке удалось только изменением информации в реестре в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage OEMCP=1251 с перезагрузкой компьютера. После этой операции в заголовке начинает прописываться виндовая кодировка (опять же она НЕ будет зависеть от NLS_LANG и, соответственно, от реальной перекодировки данных).
0 голосов
ответил 23 Апр, 03 от Erkesh (1,080 баллов)
Точно. Работает. Спасибо.
Только после изменения oemcp и перезагрузки компьютера, в командной строке вместо русских символов вываливается псевдографика. Но в общем и целом - проблема решена. Еще раз спасибо.
0 голосов
ответил 24 Апр, 03 от igorstr (6,660 баллов)
Зато появилось красивое решение для Excel, если делать по первому пункту.
Кстати, "псевдографика" - это именно "графика", но в виде символов (уголки, полоски, сердечки, крестики, etc), думается, у вас этого не вылезало в заголовке. Псевдографика означает не только неверную кодировку, но и, как правило, неверный шрифт. У нас в конторе то что, скорее всего, вылезало у вас называется "крякозябры" (бывают русские и европейские). Первые означают "неверная кодирока", вторые, как правило, - еще и/только отсутствие кирилицы ваще (причины - разные).
Да и так ли он вам нужен, этот заголовок, а если дорог и мил или хочется сделать select * from my_data, то придется фонт на Licida (в ХР) поменять, а в реестре (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes) ему подстановку, например, на Arial,204 сделать (сам не пробовал, но должно работать).
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...