С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.64
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
#1

DOS-866 в Unicode (UTF-8) - C++

31.10.2009, 23:02. Просмотров 5872. Ответов 9
Метки нет (Все метки)

Замаялся с кодировками. в файле данные в Unicode (UTF-8) у меня в консольнмо приложении в DOS-866. начинаю сливать данные из консоли и из моего файла, получается смесь дикая и половина текста не читабельна.
как привести их к одному виду? желательно к Unicode (UTF-8) или, наверняка, есть универсальный метод преобразовывания и предоставляется он языком, только я его не знаю. просветите по данному вопросу и зря тему шрифтов в консоли закрыли.
хотя я уже кучу оттуда вариантов перебрал и всё как рыба об лёд
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2009, 23:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос DOS-866 в Unicode (UTF-8) (C++):

From UTF-8 to UNICODE - C++
здравствуйте!! у меня вот какой вопрос! Как сделать преобразование UTF-8 и Unicode? во общем моя программа считывает данные с базы( база...

Unicode, UTF-8 и ANSI в одном консольном приложении. Можно ли "на лету" конвертировать массив строк? - C++
Всем доброго дня) Подскажите такую весчь: можно ли в консольном приложении работать с несколькими кодировками? Нужно считать файлик в...

Конвертация из ASCII в UTF-32 или UTF-8 в UTF-32 - C++
Собсно сабж.

Объясните, что означает wcout.imbue( locale( "rus_rus.866" ) ); и wcin.imbue( locale( "rus_rus.866" ) ); ? - C++
Непонятно особенно locale( "rus_rus.866" ).

866=> Windows-кодировка... - C++
Ищу функцию для перевода из DOS кодировки 866 в Windows-кодировку на Си... Может есть у кого??

code blocks и кодировка windows 866 - C++
вобщем поставил code blocks, начал осваивать, наткнулся на проблему с кодировкой, вот самый простой пример #include <iostream> ...

9
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
31.10.2009, 23:26 #2
Глянь тут: setw + кириллица
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
01.11.2009, 07:53  [ТС] #3
сразу я обрадовался, когда первоначально в консоль полез русский текст. однако, L приминим только к строке, а у меня перебиратеся массив строк, но это обойти можно.
!!!Однако, при направление вывода не на консоль а в !!фаил!!, опять получю пьяный бред стенографистки.
надо что-то ещё...
0
Monte-Cristo
2791 / 1377 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.11.2009, 12:10 #4
TanT, будь добр, покажи этот участок кода. Постараюсь что-нибудь придумать.
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
01.11.2009, 13:02  [ТС] #5
с кодом сложно, ибо конфлик именно при записи в фаил. и весь код сводиться с банальной записи в фаил данных, которые представленные в кодировки DOS-866, а запись в фаил с данными в кодировки (UTF-8)

но если уж на то пошло то записываю, так
C++
1
    outFile<<title[i]<<endl;
где title[i] массив строк текста типа string

я поступил следующим образом, взял исходный рабочий фаил, копирнул его, перименовал, записал в него требуемые данные и в ходе работы забираю их из файла, в той самой кодировки что и всё остальные исходные данные. создаваемые мной файлы, при записи получают данные в одной кодировки и отображение (UTF-8).

собственно вопрос, как сделать перебразовать данные в кодировку UTF-8 и вести запись в фаил в этой же кодировки ?
или как преобразовать данные полученные из файла в кодировке UTF-8 в другую кодировку, скажем DOS-866
0
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,405
01.11.2009, 13:07 #6
Посмотри на такую штуку: boost::utf8_codecvt_facet (utf8_codecvt.facet.hpp)
0
Monte-Cristo
2791 / 1377 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.11.2009, 13:13 #7
TanT, т.е. ofstream'ом ты не создаешь файл, а дописываешь в существующий, который кодирован в UTF-8?
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.11.2009, 13:08  [ТС] #8
нет создаю фаил ofstream, надо создать в UTF-8 а получаю вообще в анси. как установить кодировку создаваемого файла?
по логике фаил создаётся в той кодировке в которой начинаешь записывать в него данные. так?
как тогда установить в проекте какую кодировку использовать?

единственно что для консоли, только для UTF-8 код не знаю
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
0
TheKnyazz
10 / 10 / 1
Регистрация: 27.04.2009
Сообщений: 30
15.11.2009, 13:45 #9
У меня похожий вопрос, мне необходимо сделать текстовик для печати. Учитывая, что у меня структура, и ascII арт сделанный под табличку, все что не в цифирном виде записывается в файл как очень нечитаемая байда, для обычных текстовых редакторов, даже notepad++. Только bred 3.0 после преобразования ним txt в dos-866 показывает что-то адекватное. Похожая преобразовалка есть в комплекте bornald с 3.1.
Подскажите пожалуйста как записать в текстовик, не dos кодировку?
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.11.2009, 13:50  [ТС] #10
тут собственно вероятно треба сменить кодировку с которой работает проект. если правильно выразился конечно.

что-то встретил про locale. однако Вижуал упорно не понимает
#include <locale.h>
std::locale::global(utf8_locale);
0
15.11.2009, 13:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2009, 13:50
Привет! Вот еще темы с ответами:

Преобразовние Utf-16 <=> Utf-8 - C++
Вопрос казалось бы простой, но нормально ответа на него я пока не нашел. Нужно вывести строчку юникода(UTF-16) в файл с изменением...

Почему-то не читается содержимое файла в OEM 866 на других компах, кроме моего - C++
Всем привет! Я написал программку по считыванию файла в формате OEM 866 и выводе определенных строк в консоль. На моих компьютерах все...

Найти в строке в текстовом файле в кодировке OEM 866 (кириллица и латиница), слова, содержащие кириллицу - C++
Приветствую, форумчане! Вот уже несколько дней не могу решить проблему. Дано: строка в текстовом файле в кодировке OEM 866, содержащая...

Unicode в c++ - C++
Нужно вывести в консоли символ: \ Просто так сделать это нельзя, решил использовать Unicode. Код символа в Unicode : \u005C Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.