Russian Qt Forum
Март 29, 2024, 14:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перекодировка KOI8-R в utf8  (Прочитано 9731 раз)
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« : Сентябрь 12, 2019, 14:20 »

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

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

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

Как мало времени и как много нужно узнать
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Сентябрь 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();
 
Записан

Юра.
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #2 : Сентябрь 17, 2019, 21:01 »

В Unicode все корректно, и преобразование в utf8 то же корректно, смотрел в QByteArray. Но после записи в БД

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

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

Как мало времени и как много нужно узнать
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.075 секунд. Запросов: 22.