crossplatform.ru

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


  Ответ в проблема кодировок
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
eldar85 Дата 7.10.2010, 6:21
  Большое спасибо, идея понятна)))) приеду с отпуска опробую и отпишусь)
Sokoloff Дата 28.9.2010, 18:12
  Вот кусок из моего проекта, он на питоне, но идея думаю будет понятна.

     if f.open(QIODevice.ReadOnly | QIODevice.Text):
            self._cueData = QStringList()

            while not f.atEnd():
                self._cueData.append(QString(f.readLine()))

            #****************************************************
            # Delete BOM
            # see http://en.wikipedia.org/wiki/Byte_Order_Mark
            #****************************************************
            if (self._cueData[0].startsWith("\xEF\xBB\xBF")):   # UTF-8
                self._codePage = 'UTF-8'
                self._cueData[0] = self._cueData[0].remove(0, 3)

            if (self._cueData[0].startsWith("\xFE\xFF")):       # UTF-16 (BE)
                self._codePage = 'UTF-16BE'
                self._cueData[0] = self._cueData[0].remove(0, 2)

            if (self._cueData[0].startsWith("\xFF\xFE")):       # UTF-16 (LE)
                self._codePage = 'UTF-16LE'
                self._cueData[0] = self._cueData[0].remove(0, 2)

            self.parseCue(self._cueData)
            f.close()
Litkevich Yuriy Дата 28.9.2010, 16:26
  в каталоге Qt есть каталог с примерами
eldar85 Дата 28.9.2010, 11:56
  не могу найти его по этой ссылке examples\tools\codecs
Litkevich Yuriy Дата 28.9.2010, 10:40
  eldar85, ты пример посмотрел?
eldar85 Дата 27.9.2010, 21:49
  вот блин, а я и внимание не обращал и в правду, хотя всегда срабатывало)))))))))
Litkevich Yuriy Дата 27.9.2010, 21:40
 
Цитата(eldar85 @ 28.9.2010, 1:16) *
ну в main.cpp у меня стоит кодировка для QString
Цитата(eldar85 @ 28.9.2010, 1:16) *
setCodecForCStrings
перевожу на русский название этого метода:
установитьКодекДляСиСтрок ("Си" - язык программирования). У QString кодировка всегда UTF-16. А этот метод устанавливает кодек, когда нужно QBateArray в QString преобразовать
eldar85 Дата 27.9.2010, 21:16
  ну в main.cpp у меня стоит кодировка для QString
такой знак "п»ї" появляется когда файл в utf_8 открываешь как 1251.
 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("windows-1251"));

а сам проект на utf-8, получается то если я пишу tmp.contains( "п»ї" ) в редакторе этот символ "п»ї" похоже не воспринемается или не видится или черт его знает, в общем в QTextEdit у меня все выводиться в 1251 так как QString в кодировке 1251 - это для моей программы обязательно.
мне нужно чтобы вот эта строка tmp.contains( "п»ї" ) когда нужно срабатывала и преобразовывала когда необходимо в нужный формат, а вот не срабатывает хотя там этот знак и есть...
кто же навыдумывал столько кодировок)))
Litkevich Yuriy Дата 27.9.2010, 17:54
 
Цитата(eldar85 @ 27.9.2010, 16:35) *
а в QString стоит кодировка 1251
это как так?

Цитата(eldar85 @ 27.9.2010, 16:35) *
этот долбаный знак "п»ї" означающий что файл в utf-8 .
затрудняюсь сказать при каких преобразованиях появляются такие символы. Но большинство текстовых редакторов первые два байта - маркер, просто игнорируют.

Глянь пример examples\tools\codecs
eldar85 Дата 27.9.2010, 12:35
  Такая проблемка, хочу чтобы поддерживались две кодировки 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. Как же быть?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 27.4.2024, 17:01