MS SQL --(?)--> UTF-8
Вариант решения задачи про преобразованию кодировки windows-1251 в БД к кодировке utf-8 для клиентской программы на QT5.Есть еще системы, которые используют mssql в кодировке win. К одной такой системе я написал расширение на QT4 и проблему с русскими буквами решил просто: сменой кодировки QTextCodec: setCodecForCStrings (QTextCodec: codecForName («Windows-1251»)); QTextCodec: setCodecForTr (QTextCodec: codecForName («Windows-1251»)); QTextCodec: setCodecForLocale (QTextCodec: codecForName («Windows-1251»)); Время идет и я по возможности перевожу свои проекты на QT5. Однако, там команды смены кодеков убрали. Все должно быть в utf, что правильно. Да и решение работало не всегда и не на каждой версии ОС win.UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
В своей программе я напрямую не отображаю результат SQL запроса в модель, поэтому проблему решил пока так:
//подключение к бд
QSqlDatabase db = QSqlDatabase: addDatabase («QODBC»);
db.setUserName (»
//скорректировал SQL-запрос, в части полей с русскими буквами
query→exec («select cast (
//кодек для преобразования QTextCodec *codec = QTextCodec: codecForName («Windows-1251»);
//беру содержимое поля как массив байт и преобразовываю его к UTF-8. дальше его можно использовать в QT … = codec→toUnicode (queryl→value (0).toByteArray ()); Интересно, что если поле не преобразовывать к varbinary, то метод .toByteArray () выдаст уже испорченные данные.
А может кто-то знает строку подключения для UTF-8?