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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с кодировками  (Прочитано 5124 раз)
NortT
Гость
« : Июнь 14, 2011, 15:52 »

Всем привет. Возникла проблема. Пишу софтинку, которая имеет textEdit. Данные едита сохраняются в текстовый файл в html виде. Если запустить софтину под линуксом, сохранить файл и затем его открыть его в этой же софтине, но в винде, то все ок. Если же создать файл под виндой, сохранить его и переоткрыть опять же под виндой, то ломается кодировка (ромбики черные с вопросами белыми внутри). При чем если открыть оба эти файла в обычном виндовом блокноте, то все нормально, текст отображается у все нормально. Как это можно поправить?
Записан
iks
Гость
« Ответ #1 : Июнь 14, 2011, 16:07 »

Я в таком случае делаю проще или перезагружаю файл в cp1251, но чаще Ctrl+S Ctrl+C и Ctrl+V тоже бывает что винда меняет кодировки если начинаеш в ней править и потом запускаеш по Linux. А еще можно сразу создавать файлы в cp1251 и уже проблем не будет
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Июнь 14, 2011, 16:48 »

А еще можно сразу создавать файлы в cp1251 и уже проблем не будет
почему не utf-8 (16, или даже 32)?
Записан

Изучением C++ вымощена дорога в Qt.

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
NortT
Гость
« Ответ #3 : Июнь 14, 2011, 18:27 »

А как перегружаешь?
При сохранении из едита в файл у меня документ имеет такой вид:
Код
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
А как мне программно изменить meta, чтоб явно указать, что текст хранится в утф8?
Записан
zenden
Гость
« Ответ #4 : Июнь 14, 2011, 18:55 »

покажи код сохранения и загрузки
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #5 : Июнь 14, 2011, 20:46 »

покажи код сохранения и загрузки
И установки кодировок.
Записан
iks
Гость
« Ответ #6 : Июнь 14, 2011, 21:28 »

Ну я вообще говорил о файлах самого проекта, до этого, то-есть .h .cpp .pro, а так я всегда проще делаю, в самом начале mail вставляю строку
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
и как-то не приходилось напарываться на проблему сохранения файлов самой прогой
« Последнее редактирование: Июнь 14, 2011, 21:57 от iks » Записан
NortT
Гость
« Ответ #7 : Июнь 15, 2011, 03:13 »

Кодировку задаю вот так:
Код
C++ (Qt)
   QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));
   QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));  
А сохранение показать сложнее... У меня кол-во текстЕдитов произвольное, и html-код едитов я при сохранении запихиваю в QDomDocument и после этого зипую получившийся хмл. Последний этап сохранения такой:
Код
C++ (Qt)
if (fileIsOpen)
{
   QTextStream (&file) << domDocument.toString();
}
file.close();
Вот так пихаю в хмл (на примере одного элемента):
Код
C++ (Qt)
       QDomElement answerText = domDocument.createElement("answerText");
       QDomText text = domDocument.createTextNode(t.getListAnswer().getAnswer(i).getTextAnswer());
       answerText.appendChild(text);
Заголовок у хмл документа задаю так:
Код
C++ (Qt)
QDomProcessingInstruction instr = doc.createProcessingInstruction("xml","version='1.0' encoding='UTF-8'");
« Последнее редактирование: Июнь 15, 2011, 03:42 от NortT » Записан
DmP
Гость
« Ответ #8 : Июнь 15, 2011, 11:03 »

Можно использовать следующие ф-ции, и все будет работать одиноково:
void QDomNode::save ( QTextStream & str, int indent, EncodingPolicy encodingPolicy ) const
void QTextStream::setCodec ( const char * codecName )
Записан
NortT
Гость
« Ответ #9 : Июнь 16, 2011, 13:42 »

То что надо!  Крутой
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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