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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как правильно записать wchar_t в бинарный файл?  (Прочитано 14357 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #15 : Март 07, 2018, 17:40 »

toLocal8Bit() конвертирует в текущую кодовую страницу, на русской винде по умолчанию это CP1251 — скорее всего отсюда и проблема
Записан

Изучением 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
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Март 08, 2018, 08:33 »

По поводу спецификации png и порядка следования байт - все в порядке, заголовок файла правильный.
SysStringLen() - считает длину корректно.
Если пишете в png - то надо писать с помощью тамошнего API, т.е. не просто "строка" (на деревню дедушке), а тег который читатели понимают, напр Title, Author, Description и др. Насколько я помню, там только латиница.
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #17 : Март 08, 2018, 14:42 »

Цитировать
Если пишете в png - то надо писать с помощью тамошнего API, т.е. не просто "строка" (на деревню дедушке), а тег который читатели понимают, напр Title, Author, Description и др. Насколько я помню, там только латиница.
Мне передается содержимое png файла, через BSTR строку, я пытаюсь сохранить эту строку в такойже png файл, при чем здесь тег Title, Author и т.д.Непонимающий
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #18 : Март 10, 2018, 10:37 »

Мне передается содержимое png файла, через BSTR строку, я пытаюсь сохранить эту строку в такойже png файл, при чем здесь тег Title, Author и т.д.Непонимающий
При том что файл имеет формат и если его нарушить - файл станет нечитаемым. Грубо говоря
Цитировать
заголовок
   - тег1
   - тег2
...
содержимое (картинка, может упакованная)
Куда (в какое место) и что Вы хотите писать?
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #19 : Март 10, 2018, 12:11 »

Строка это и есть файл (все его содержимое), содержимое этой строки я записываю в файл на диске (например png).
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #20 : Март 10, 2018, 14:51 »

если есть возможность, лучше вместо BSTR получать чистые байты, тогда и проблемы не будет. если нет, попробуй toLatin() вместо toLocal8Bit().
Записан

Изучением 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
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #21 : Март 10, 2018, 20:59 »

Пробовал, сохраняет не правильно, размер файла увеличен в 2 раза, через каждый байт вставляет пустые символы.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #22 : Март 10, 2018, 22:31 »

это из-за того, что wchar_t двухбайтовый в винде. Можно конечно банально отрезать нули через один после конвертации Улыбающийся
Записан

Изучением 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
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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