![]() |
|
|
![]()
|
|
| livo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 14.10.2007 Репутация: 1 Всего: 1 |
Доброго времени суток.
Задача такова: есть файл, сохраненный в кодировке UTF 8, который необходимо загрузить и, расшифровав, отобразить в TRichEdit. Использовал модифицированные примеры из этого форума, но чего-то не пашет. Коротко опишу код: Есть две функции одна - wstostr - расшифровывает переданную ей строку; вторая - LoadUTF8 - считывает данные с файла. Все эти радости запускаются кнопкой в процедуре sBitBtn1Click. Два файла, которые я пытался расшифровать находятся в прилагаемом архиве. Они сохранялись программой Notepad++ в кодировках UTF8 и UTF8 without BOM (не знаю в чем между ними разница). И еще, у меня 6-й билдер.
Присоединённый файл ( Кол-во скачиваний: 1 )
utf8.rar 0,67 Kb |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
UTF8 это не WideChar строка, а MultiByte . Помещать ее в wstring неправильно. Можно использовать string.
Соответственно вызываем MultiByteToWideChar и получаем строку в формате UTF16 .Дальше UTF16 в ANSI -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| livo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 14.10.2007 Репутация: 1 Всего: 1 |
Ну, понял. Вот как-то так:
Работал с теми файлами, что описывал выше. Результат:
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Очевидно что знак вопроса это BOM. Его нужно пропускать при чтении. При записи заносить первым. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
BOM - это Byte order mark, т.е. несколько байт, которые записываются перед данными и указывают на то, какие данные идут дальше. BOM очень часто используется в структурированных файлах. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| kovamoka |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 20.5.2012 Репутация: нет Всего: нет |
Я не думаю что оно использует структурирование. Это на яве проде кодеровку сменить можно. |
||||
|
|||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Я имел ввиду не именно кодировку. BOM используется для обозначения типа шапки например. Чтобы можно было однозначно её определить. Взять тот же ZIP: у каждой шапки есть свой BOM. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |