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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt 4.1.1 => Qfile::readAll()  (Прочитано 7447 раз)
bigirbis
Гость
« : Сентябрь 14, 2006, 10:13 »

Кто-нибудь под виндой сталкивался с проблемой:
Код:
QFile f( "text.html" )
if( f.open(.....) )
{
 QString str = QString::fromUtf8( f.readAll() );
}

Непонимающий
В начале строки после такой операции появляются непечатаемые символы. Грустный
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Сентябрь 14, 2006, 10:19 »

очень похоже на то что ты файл открываешь как бинарный
а надо как текстовый
Записан
KADABRA
Гость
« Ответ #2 : Сентябрь 14, 2006, 10:30 »

Они появляются там потому, что они там действительно находятся.
В УТФ кодировке виндовские редакторы добавляют в начало файла какои-то идентификатор того, что это УТФ.
Записан
bigirbis
Гость
« Ответ #3 : Сентябрь 14, 2006, 10:34 »

To KADABRA
Осилил. Думаю, ты прав. Пересохранил файл в локальную кодировку - все отлично.
Записан
noosooth
Гость
« Ответ #4 : Сентябрь 14, 2006, 11:29 »

Это называется Byte Order Mark (BOM).
http://www.unicode.org/faq/utf_bom.html#BOM

Для UTF8 это EF BB BF и, насколько я знаю, используется только в качестве сигнатуры, т.к. порядок байт в UTF8 вроде как всегда один и тот же.
Наличие такой сигнатуры в UTF8 файле необязательно, посему
приличный редактор должен по идее уметь работать и так и эдак.

Насколько я понимаю, в виндовых редакторах эти кодировки обозначаются как:
Unicode (UTF-8 with signature)
Unicode (UTF-8 without signature)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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