На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Получение короткого названи слоя из классификатора

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: Пред. 1 2 3
RSS
Получение короткого названи слоя из классификатора
 
Цитата
Vladimir Letov написал:
Внутри классификатора сейчас все либо в CP-1251, либо в UTF-16. Всегда. На любой системе. Разница только в API-интерфейсе.
Не правда. Сейчас взял классификатор для астры, там данные лежали в KOI8-R, а взял одноименный классификатор для Windows и там текст лежал в кодировке Windows-1251. А юникодовской функции для получения короткого названия слоя в 11 версии не нашлось, либо она работает неправильно, о чем писал выше. В программе-то, я как раз сделал #ifdef, но только это не гарантирует, что данные в классификаторе для астры будут в KOI8-R, учитывая, что данные в него могут вноситься в windows, где, как вы сказали, 1251 - по умолчанию. И соответственно строка там будет лежать в windows-1251, а не как ожидалось в KOI8-R.
 
Приветствую!

Открыл operator.rsc из состава ГИС Оператор для Астра через mc при помощи F3. Строки внутри файла читаются при установке кодировки Cp1251. В Koi8-r  строки не читаются. Посмотрел для классификатора в версии ГИС Конструктор 11.8.3 (старее не нашел) - то же самое. для ГИС Конструктор 12.х.х тоже в cp1251
Владимир Летов, похоже не обманывает!

Как вы определили что "там данные лежали в KOI8-R"?

С уважением,
Матвеев П.В.
 
Цитата
Vladimir Letov написал:
Внутри классификатора сейчас все либо в CP-1251, либо в UTF-16. Всегда. На любой системе. Разница только в API-интерфейсе.
Уточнение.
Внутри классификатора сейчас все строки хранятся в однобайтовой кодировке (CP-1251 или Koi8-R) и в в двухбайтовой (UTF-16).
При редактировании RSC в Windows однобайтовые строки преобразуются в CP-1251, в Linux - в Koi8-R.
При этом меняется флаг кодировки в заголовке файла.
Кроме того, проверяется порядок байт в числах (при работе на SPARC, MIPS и т.п.) и выполняется перекодировка чисел. Такие RSC тоже будут попадаться по мере
внедрения соответствующих платформ.
При открытии файла выполняется проверка на соответствие кодировок файла  кодировке ОС/процессора и выполняются перекодировки при необходимости.
Все исходные тексты функций обработки RSC есть в sdk12.zip в разделе Скачать.
 
Цитата
Павел Матвеев написал:
Приветствую!

Как вы определили что "там данные лежали в KOI8-R"?

С уважением,
Матвеев П.В.
С помощью QTextCodec. Вывел строку для кодировки KOI8-R - получил правильное отображение, а для windows-1251 получил кракозябры.
 
Цитата
Oleg Belenkov написал:
При открытии файла выполняется проверка на соответствие кодировок файла  кодировке ОС/процессора и выполняются перекодировки при необходимости.
Т.е. гарантируется, что если файл был изменен в windows и, соответственно, как вы написали выше, однобайтовые строки преобразовались в windows-1251, то при открытии классификатора в линукс(астре) все однобайтовые строки автоматически преобразуются в KOI8-R?
 
Цитата
С помощью QTextCodec. Вывел строку для кодировки KOI8-R - получил правильное отображение, а для windows-1251 получил кракозябры.
Именно об этом я и говорил: в API принято соглашение, что в Linux-системах на любой запрос, который возвращает тип (char *) Вы получаете строку в кодировке KOI8-R, в Windows-системах в этом же месте вы получаете строку в CP1251 (и да, в структурах точно так же).
Но это относится именно к API-интерфейсу. Как это реализовано внутри mapacces и в какой кодировке хранится в RSC-файле, в данном случае не важно, потому что Вы читаете его API-функциями, которые выполняют преобразование кодировки в нужную на текущий момент.
 
На этом, думаю, тема исчерпана. Спасибо всем за ответы. Не знаю только, как пометить или переименовать тему, что она решена.
Страницы: Пред. 1 2 3
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности