Название: QString и национальный алфавит Отправлено: mokynis от Июнь 05, 2015, 09:08 Программно формирую html-файл. В тексте используются буквы национального алфавита. В linux все отображается нормально, в windows-если просто перекомпилировать, то не проходит 1 буква, если предварительно заменяю символы, набранные в linux на символы из windows'овского Charachter Map, тогда вообще все символы преобразуются к похожим английским символам. Что я не так делаю?
(signs1.png) - вот так выглядит вывод откомпилированного без изменений приложения (signs.png) - а так выглядят символы, введенные в самом windows Название: Re: QString и национальный алфавит Отправлено: Пантер от Июнь 05, 2015, 09:12 Не используй в коде символы кириллицы.
Название: Re: QString и национальный алфавит Отправлено: gil9red от Июнь 05, 2015, 09:18 Файлы в кодировке utf-8 храните (без BOM)
Название: Re: QString и национальный алфавит Отправлено: mokynis от Июнь 05, 2015, 10:12 Цитировать Не используй в коде символы кириллицы. это где там у меня хоть одна русская буква?Цитировать Файлы в кодировке utf-8 храните не совсем понял, про какой файл идет речь. Если про сам .cpp, то он создавался в linux (я ж писал), там все в utf-8если .html, так там charset=utf-8, а в какой кодировке сам файл-не важно. Так, собственно, QString уже на момент формирования содержит в себе не то, что нужно, так что, при чем тут файл? Название: Re: QString и национальный алфавит Отправлено: __Heaven__ от Июнь 05, 2015, 10:36 Цитировать Не используй в коде символы кириллицы. это где там у меня хоть одна русская буква?Название: Re: QString и национальный алфавит Отправлено: __Heaven__ от Июнь 05, 2015, 10:37 Имхо, кирилицу и кракозябры необходимо хранить в отдельном файле. Либо txt, либо qm.
Название: Re: QString и национальный алфавит Отправлено: Bepec от Июнь 05, 2015, 10:59 trUtf8() попробуйте использовать.
Название: Re: QString и национальный алфавит Отправлено: mokynis от Июнь 05, 2015, 12:26 Цитировать буква ё там литовская буква ė (с одной точкой) ;-)а насчет tr() я уже думал. Но там текст собирается в несколько приемов. Разве что str1=tr("блаблабла"); str2=tr("манамана"); str1+=str2; ? Попробую... не-а, ничего не дало. Еще варианты есть? Название: Re: QString и национальный алфавит Отправлено: Hellraiser от Июнь 05, 2015, 13:59 Для передачи национальных символов используйте QString::fromUtf8 и исходники в UTF-8, не надо себе усложнять жизнь установкой кодеков.
Код: QString my_string = QString::fromUtf8("бла-бла-бла"); Название: Re: QString и национальный алфавит Отправлено: mokynis от Июнь 05, 2015, 15:23 вместо
Код: QString str="\n___ĄČĖĘŠŪŽąčėęšūųž___\n"; Код: QString str=QString::fromUtf8("\n___ĄČĖĘŠŪŽąčėęšūųž___\n") А насчет того, как сохранен текст-так текст на QLabel сохранен в .exe-файле, какая там кодировка? Дело в том, что при отладке видно-переменная str сразу хранит не тот текст, что задается. Да там весь код-то: Код: #include <QtGui> Название: Re: QString и национальный алфавит Отправлено: Igors от Июнь 05, 2015, 15:39 Были проблемы с французской буквой "e". Короче сделал так:
- засекаю какая буква подается на вход и отображается неверно (2 байта в юникоде) - в любом тестовом примере набираю "как должно быть нормально" (в IDE все работает) и опять засекаю эти 2 байта - подменяю когда приходит текст Как-то там "цивильно, через кодировку" - ну вот у меня "источник" = текст из нативных ресурсов, поди угадай какая она там. Да и все эти setCodec в пятерке поубирали Название: Re: QString и национальный алфавит Отправлено: mokynis от Июнь 05, 2015, 15:55 Цитировать Короче сделал так: я дико извиняюсь-а можно поподробнее, а то ничего не понял. Я пытался вставить в строку QChar(0x0160) - это та самая Š. Не срабатываетНазвание: Re: QString и национальный алфавит Отправлено: Igors от Июнь 05, 2015, 16:09 Цитировать Короче сделал так: я дико извиняюсь-а можно поподробнее, а то ничего не понял. Я пытался вставить в строку QChar(0x0160) - это та самая Š. Не срабатываетКод Для поиска "неверной" буквы - процедура та же Название: Re: QString и национальный алфавит Отправлено: sociopath от Июнь 07, 2015, 02:33 Код: QTextStream stream; На помощь нам как всегда приходит дока. Раз: Цитировать QTextStream & QTextStream::operator<<(const QString & string) Два:Writes the string string to the stream, and returns a reference to the QTextStream. The string is first encoded using the assigned codec (the default codec is QTextCodec::codecForLocale()) before it is written to the stream. Цитировать void QTextStream::setCodec(const char * codecName) Sets the codec for this stream to the QTextCodec for the encoding specified by codecName. Common values for codecName include "ISO 8859-1", "UTF-8", and "UTF-16". If the encoding isn't recognized, nothing happens. Example: Цитировать QTextStream out(&file); out.setCodec("UTF-8"); Название: Re: QString и национальный алфавит Отправлено: kambala от Июнь 07, 2015, 03:26 ну вот у меня "источник" = текст из нативных ресурсов, поди угадай какая она там. можно попробовать угадать через +[NSString stringWithContentsOfFile:usedEncoding:error:], но грузить надо из файлаНазвание: Re: QString и национальный алфавит Отправлено: Igors от Июнь 07, 2015, 10:14 можно попробовать угадать через +[NSString stringWithContentsOfFile:usedEncoding:error:], но грузить надо из файла То если текст задуман как национальный. Но сам по себе он может быть просто английский + какие-то еще буквы (напр значок копирайта, "верхние" (нижние) кавычки) вот с ними возможны проблемы.Название: Re: QString и национальный алфавит Отправлено: mokynis от Июнь 08, 2015, 15:23 Спасибо всем за помощь. Особенно gil9red и Hellraiser - ведь долбали же, чтобы обратил внимание на кодировку исходников. Точно, в винде в свойствах проекта стояло "сохранять в системной кодировке". Все получилось
Название: Re: QString и национальный алфавит Отправлено: gil9red от Июнь 08, 2015, 20:49 ;)
|