crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> проблема кодировок
eldar85
  опции профиля:
сообщение 27.9.2010, 12:35
Сообщение #1


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


Такая проблемка, хочу чтобы поддерживались две кодировки 1251 и utf-8 в QTextEdite. Проект написан на utf-8 а в QString стоит кодировка 1251 это вызвано нуждами программы, так вот если я вывожу файл который сохранен в utf-8 то кирилица вся конечно же кашей и в начале этот долбаный знак "п»ї" означающий что файл в utf-8 .
Хотелось сделать чтобы прога понимала какой файл в нее вставляют и выводила нормальную кодировку.
написал такой код:
QFile file( "c:/....txt" );
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QMessageBox::about(this, tr( "Error" ),
                           tr( "<FONT color=red>Не возможно открыть файл!</FONT>" ));
    }
    else
    {

        QString tmp;
        tmp  = file.readAll();

        if( tmp.contains( "п»ї" ) )        //проблема тут, п»ї не видет и выводит все как 1251
            textForEdit->setText( tmp.toUtf8()  );
        else
            textForEdit->setText( tmp  );     //всегда срабатывает эта строка


        file.close();
}


но этот знак "п»ї" не видет прога так как проект написан в utf-8. Как же быть?

Сообщение отредактировал eldar85 - 27.9.2010, 15:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
eldar85
  опции профиля:
сообщение 27.9.2010, 21:16
Сообщение #2


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


ну в main.cpp у меня стоит кодировка для QString
такой знак "п»ї" появляется когда файл в utf_8 открываешь как 1251.
 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("windows-1251"));

а сам проект на utf-8, получается то если я пишу tmp.contains( "п»ї" ) в редакторе этот символ "п»ї" похоже не воспринемается или не видится или черт его знает, в общем в QTextEdit у меня все выводиться в 1251 так как QString в кодировке 1251 - это для моей программы обязательно.
мне нужно чтобы вот эта строка tmp.contains( "п»ї" ) когда нужно срабатывала и преобразовывала когда необходимо в нужный формат, а вот не срабатывает хотя там этот знак и есть...
кто же навыдумывал столько кодировок)))

Сообщение отредактировал eldar85 - 27.9.2010, 21:20
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 2:38