| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Qt+ 1Cv7.7 |
| Автор: sergey_85 5.10.2011, 21:29 | ||||||
| Привет! Вот такая вот проблема с 1С в связке с Qt. Никак не хочет понимать русские названия справочников.
Вот что вылазит пр ивызове этого метода
|
| Автор: _GRIN_ 6.10.2011, 10:49 | ||||||
sergey_85, я не до конца понял - в какой кодировке набран твой исходник.
Если в кодировке cp1251 (Windows-1251) - то из "Справочник.Сотрудники" (как const char* - т.е. си-строки) ты получишь нечитаемый текст. Тогда тебе надо поправить
Если в кодировке utf-8 - то вроде всё должно нормально работать. В любом случае лучше попробуй следующий вариант:
Пальцем небо конечно =). |
| Автор: bsa 10.10.2011, 11:14 | ||
еще можно попробовать так:
|
| Автор: sergey_85 10.10.2011, 19:10 | ||||||||||||
у меня
здесь не может преобразовать:
вот, что выдает:
*вызов методов .toAscii().data() выдает это:
а вот это работает:
|
| Автор: math64 10.10.2011, 19:49 |
| Почему разные кодеки для tr() и CStrings - по-моему, это бессьысленно. Твой исходик либо в 1251, либо в utf. Определись, какая кодировка нужна 1С и конвертируй в неё - можешь для эксперимента, записать строку "Справочник.Контрагенты" в текстовый файл в разных кодировках и загружать как массив байт, определи какая кодировка требуется, и потом можешь встроить эту строку в код, используя нужный кодек. |
| Автор: sergey_85 10.10.2011, 20:27 |
| для 1С требуется кодировка win-1251 |
| Автор: math64 10.10.2011, 20:44 |
| Тогда устанавливай оба кодека в 1251, все исходники в 1251, и можешь не пользоваться tr() - в тех случаях, когда строка не требует перевода. tr() используется, когда строка может или будет переводиться Лингвистом. |
| Автор: sergey_85 10.10.2011, 21:43 | ||||
| победил, работает!!! особое внимание на передачу параметров в CreateObject и вызов методов типа ВыбратьЭлементы()
исходный код в win-1251
Спс за помощь! |
| Автор: sergey_85 11.10.2011, 21:48 | ||||||
а если мне нужно, чтобы было так
чем заменить вызов?
конструкции типа этой не работают =(
|
| Автор: math64 12.10.2011, 07:58 | ||||||||||
Поясни зачем - у тебя, что исходники то в UTF8, то в 1251? Лучше привести к одной кодировке, в данном случае - 1251. Если нужно один раз перекодировать из UTF8,
Добавлено через 7 минут и 51 секунду
Потому что ты неправильно используешь codec->fromUnicode() Аргументом для неё должна быть QString (у неё всегда кодировка Unicode), а у тебя char*. Неявно вызывается конструктор QString. А у тебя для такого конструктора указана кодировка UTF8 - непонятно зачем, если исходники в 1251 ? |