Название: кодировка с последующей сверткой Отправлено: Danila_Bagrofff от Июль 19, 2013, 17:07 Проект по умолчанию написан в UTF-8.
Но сворачивать toBase64 необходимо кодировку CP1251. Однако после перевода из UTF в CP1251 свертка становится "кривой". Как можно придумать обойти сие недоразумение? Код: QString LoodsmanSpecialFunction::convertString( Название: Re: кодировка с последующей сверткой Отправлено: Old от Июль 19, 2013, 17:11 В QString строки хранятся в UNICODE. Если в nameDB правильное значение, то вам нужно произвести одно преобразование в CP1251.
Название: Re: кодировка с последующей сверткой Отправлено: Danila_Bagrofff от Июль 19, 2013, 17:15 чет туплю...
как бы я уже преобразовал.. на каком этапе еще не хватает чего-то? Название: Re: кодировка с последующей сверткой Отправлено: Old от Июль 19, 2013, 17:18 на каком этапе еще не хватает чего-то? Я бы сказал есть лишнее. :)Если конечно nameDB, передаваемое в createLinkObjectFromLoodsman имеет правильное значение. Код
Название: Re: кодировка с последующей сверткой Отправлено: Danila_Bagrofff от Июль 19, 2013, 17:23 QString LoodsmanSpecialFunction::convertString(
QString startString, //входная строка в кодировке startCodec QByteArray startCodec, //входная кодировка QByteArray endCodec //кодировка на выходе ) { QTextCodec *codec = QTextCodec::codecForName( startCodec ); QTextCodec *codec1 = QTextCodec::codecForName( endCodec ); QByteArray text; text.append(startString); startString = codec->toUnicode( text ); startString = codec1->fromUnicode( startString ); return startString; } ВОт так расшифрую. На входе строка в UTF-8. Соответсвенно и стартовый кодек UTF-8. На выходе строка вроде как cp1251. Вот только как бы реально не эта кодировка. Потому как после свертки я вижу всякую билиберду... Название: Re: кодировка с последующей сверткой Отправлено: Old от Июль 19, 2013, 17:26 ВОт так расшифрую. Вот как-то в этом я сомневаюсь.На входе строка в UTF-8. Как присваивается эта строка? Откуда она берется? Название: Re: кодировка с последующей сверткой Отправлено: Danila_Bagrofff от Июль 19, 2013, 17:28 понял. ща протестю.
Название: Re: кодировка с последующей сверткой Отправлено: Danila_Bagrofff от Июль 19, 2013, 17:41 локальная кодировка utf-8.
Имя БД читается из конфиг файла. А значит все-таки в ютф-формате в стринге хранится? Также. На старте проги из cp1251 в utf все корректно перевоится, но я точно знаю, что на входе программы строка в формате 1251. А здесь мне надо выдать обратный вывод в 1251. Название: Re: кодировка с последующей сверткой Отправлено: Danila_Bagrofff от Июль 19, 2013, 17:46 когда-то раньше проект был в cp1251 и проблем с переводом формата не было...
А сейчас что-то не хочется опять конвертить.... Название: Re: кодировка с последующей сверткой Отправлено: Old от Июль 19, 2013, 17:57 локальная кодировка utf-8. Не может там храниться в utf. При присвоении происходит преобразования.Имя БД читается из конфиг файла. А значит все-таки в ютф-формате в стринге хранится? Проверьте имя базы при входе в createLinkObjectFromLoodsman, если там все нормально, то нужно только одно преобразование fromUnicode. Название: Re: кодировка с последующей сверткой Отправлено: Danila_Bagrofff от Июль 19, 2013, 18:01 Old, спасибо.
В общем нефик по 100 раз конвертить QByteArray<->QString, тут и происходит потеря данных. Сделал так. Код: QByteArray LoodsmanSpecialFunction::baConvertString( |