Прочитать строки в utf8 из бинарного файла, Ищу решение |
Здравствуйте, гость ( Вход | Регистрация )
Прочитать строки в utf8 из бинарного файла, Ищу решение |
iddqd |
17.7.2010, 14:50
Сообщение
#1
|
Студент Группа: Участник Сообщений: 32 Регистрация: 26.11.2009 Пользователь №: 1261 Спасибо сказали: 1 раз(а) Репутация: 0 |
Есть бинарный файл, в котом местами встречаются строки в кодировке utf8, перед каждой такой строкой стоит её длина в виде qint32.
Вот пример:
06000000 - длина данных с текстом в байтах, D098D0BCD18F - слово "Имя" в utf8 Пытаюсь читать вот так:
В консоли вижу нечитаемый набор символов и знаков вопросов вместо текста. Как правильнее реализовать чтение данных в этом случае? Qt 4.6, Win32 |
|
|
Алексей1153 |
17.7.2010, 20:08
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
вариант тоже работает корректно Хм, тогда что же делать с этим Строка не оканчивалась нулем, проверил неоднократно Когда же появляется не ноль? Загадка... ps Бессмертный ник тому виной, не иначе Сообщение отредактировал Алексей1153 - 17.7.2010, 20:09 |
|
|
iddqd |
17.7.2010, 20:43
Сообщение
#3
|
Студент Группа: Участник Сообщений: 32 Регистрация: 26.11.2009 Пользователь №: 1261 Спасибо сказали: 1 раз(а) Репутация: 0 |
Строка нулём не оканчивалась. Вот пример данных:
Цитата 06 00 00 00 D0 98 D0 BC D1 8F 30 00 00 00 D0 90 D0 B2 D1 82 .. 06 00 00 00 - quint32, размер данных с текстом 1й строки далее 6 байт - текст 1й строки потом сразу 30 00 00 00 - quint32, размер данных с текстом 2й строки далее 48 байт - текст 2й строки Под "тоже" имелось в виду, что при помощи QString::fromUtf8(label, labelLen) я получаю корректную строку аналогично методу предложенному вами. Только без дополнительной инициализации и дописывания 0 в конец массива. |
|
|
Текстовая версия | Сейчас: 29.11.2024, 4:49 |