![]() |
|
|
![]()
|
|
| sergey_85 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
Привет!
Вот такая вот проблема с 1С в связке с Qt. Никак не хочет понимать русские названия справочников.
Вот что вылазит пр ивызове этого метода
-------------------- A good design always pays off. |
||||||
|
|||||||
| _GRIN_ |
|
||||||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
sergey_85, я не до конца понял - в какой кодировке набран твой исходник.
Если в кодировке cp1251 (Windows-1251) - то из "Справочник.Сотрудники" (как const char* - т.е. си-строки) ты получишь нечитаемый текст. Тогда тебе надо поправить
Если в кодировке utf-8 - то вроде всё должно нормально работать. В любом случае лучше попробуй следующий вариант:
Пальцем небо конечно =). -------------------- Дорогу осилит идущий |
||||||
|
|||||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
еще можно попробовать так:
|
|||
|
||||
| sergey_85 |
|
||||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
у меня
здесь не может преобразовать:
вот, что выдает:
*вызов методов .toAscii().data() выдает это:
а вот это работает:
Это сообщение отредактировал(а) sergey_85 - 10.10.2011, 19:15 -------------------- A good design always pays off. |
||||||||||||
|
|||||||||||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Почему разные кодеки для tr() и CStrings - по-моему, это бессьысленно. Твой исходик либо в 1251, либо в utf.
Определись, какая кодировка нужна 1С и конвертируй в неё - можешь для эксперимента, записать строку "Справочник.Контрагенты" в текстовый файл в разных кодировках и загружать как массив байт, определи какая кодировка требуется, и потом можешь встроить эту строку в код, используя нужный кодек. |
|||
|
||||
| sergey_85 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
для 1С требуется кодировка win-1251
-------------------- A good design always pays off. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Тогда устанавливай оба кодека в 1251, все исходники в 1251, и можешь не пользоваться tr() - в тех случаях, когда строка не требует перевода. tr() используется, когда строка может или будет переводиться Лингвистом.
|
|||
|
||||
| sergey_85 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
победил, работает!!!
особое внимание на передачу параметров в CreateObject и вызов методов типа ВыбратьЭлементы()
исходный код в win-1251
Спс за помощь! Это сообщение отредактировал(а) sergey_85 - 10.10.2011, 21:49 -------------------- A good design always pays off. |
||||
|
|||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Вместо этого:
tr() используй ТОЛЬКО ДЛЯ ТЕКСТА, КОТОРЫЙ СЛЕДУЕТ ПЕРЕВОДИТЬ ПРИ ЛОКАЛИЗАЦИИ ПРИЛОЖЕНИЯ. |
||||
|
|||||
| sergey_85 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
а если мне нужно, чтобы было так
чем заменить вызов?
конструкции типа этой не работают =(
Это сообщение отредактировал(а) sergey_85 - 11.10.2011, 22:02 -------------------- A good design always pays off. |
||||||
|
|||||||
| math64 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Поясни зачем - у тебя, что исходники то в UTF8, то в 1251? Лучше привести к одной кодировке, в данном случае - 1251. Если нужно один раз перекодировать из UTF8,
Добавлено через 7 минут и 51 секунду Потому что ты неправильно используешь codec->fromUnicode() Аргументом для неё должна быть QString (у неё всегда кодировка Unicode), а у тебя char*. Неявно вызывается конструктор QString. А у тебя для такого конструктора указана кодировка UTF8 - непонятно зачем, если исходники в 1251 ? |
||||||
|
|||||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |