Russian Qt Forum
Ноябрь 22, 2024, 23:54
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Как правильно записать wchar_t в бинарный файл?
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как правильно записать wchar_t в бинарный файл? (Прочитано 14363 раз)
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Как правильно записать wchar_t в бинарный файл?
«
Ответ #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
Сообщений: 11445
Re: Как правильно записать wchar_t в бинарный файл?
«
Ответ #16 :
Март 08, 2018, 08:33 »
Цитата: OS2 от Март 06, 2018, 16:18
По поводу спецификации png и порядка следования байт - все в порядке, заголовок файла правильный.
SysStringLen()
- считает длину корректно.
Если пишете в png - то надо писать с помощью тамошнего API, т.е. не просто "строка" (на деревню дедушке), а тег который читатели понимают, напр Title, Author, Description и др. Насколько я помню, там только латиница.
Записан
OS2
Самовар
Offline
Сообщений: 186
Re: Как правильно записать wchar_t в бинарный файл?
«
Ответ #17 :
Март 08, 2018, 14:42 »
Цитировать
Если пишете в png - то надо писать с помощью тамошнего API, т.е. не просто "строка" (на деревню дедушке), а тег который читатели понимают, напр Title, Author, Description и др. Насколько я помню, там только латиница.
Мне передается содержимое png файла, через BSTR строку, я пытаюсь сохранить эту строку в такойже png файл, при чем здесь тег Title, Author и т.д.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Как правильно записать wchar_t в бинарный файл?
«
Ответ #18 :
Март 10, 2018, 10:37 »
Цитата: OS2 от Март 08, 2018, 14:42
Мне передается содержимое png файла, через BSTR строку, я пытаюсь сохранить эту строку в такойже png файл, при чем здесь тег Title, Author и т.д.
При том что файл имеет формат и если его нарушить - файл станет нечитаемым. Грубо говоря
Цитировать
заголовок
- тег1
- тег2
...
содержимое (картинка, может упакованная)
Куда (в какое место) и что Вы хотите писать?
Записан
OS2
Самовар
Offline
Сообщений: 186
Re: Как правильно записать wchar_t в бинарный файл?
«
Ответ #19 :
Март 10, 2018, 12:11 »
Строка это и есть файл (все его содержимое), содержимое этой строки я записываю в файл на диске (например png).
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Как правильно записать wchar_t в бинарный файл?
«
Ответ #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
Сообщений: 186
Re: Как правильно записать wchar_t в бинарный файл?
«
Ответ #21 :
Март 10, 2018, 20:59 »
Пробовал, сохраняет не правильно, размер файла увеличен в 2 раза, через каждый байт вставляет пустые символы.
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Как правильно записать wchar_t в бинарный файл?
«
Ответ #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
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...