Russian Qt Forum

Qt => Общие вопросы => Тема начата: Примерный ученик от Сентябрь 12, 2019, 14:20



Название: Перекодировка KOI8-R в utf8
Отправлено: Примерный ученик от Сентябрь 12, 2019, 14:20
Есть база данных SQLite в кодировке KOI8-R.
Данные загружаются корректно и проводится перекодировка.
В переменной isx исходная строка.
Код:
        QString isx;
QTextCodec *codecOut = QTextCodec::codecForName("utf8"); //utf8
QByteArray data = codecOut->fromUnicode(isx);

Все преобразование корректно, кроме русской буквы 'И' заглавное. Вместо нее получается
два квадратика и знак вопроса.

В чем может быть причина?


Название: Re: Перекодировка KOI8-R в utf8
Отправлено: lit-uriy от Сентябрь 16, 2019, 11:03
>codecOut->fromUnicode(isx);
Этим те пытаешься сделать Unicode (16bit) -> UTF-8
А не из KOI8-R в UTF-8

Делай в два этапа:
Код
C++ (Qt)
QString isx; // строка в KOI8-R
// KOI8 -> Unicode (16bit)
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
QString stringUnicode = codec->toUnicode(encodedString);
 
//Unicode (16bit) -> UTF-8
QByteArray stringUtf8 = stringUnicode.toUtf8();
 


Название: Re: Перекодировка KOI8-R в utf8
Отправлено: Примерный ученик от Сентябрь 17, 2019, 21:01
В Unicode все корректно, и преобразование в utf8 то же корректно, смотрел в QByteArray. Но после записи в БД

Код:
			buffer->setValue("help",data);

при чтении данного поля в AsraLinux все русские буквы нормальные, кроме 'И'