Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
_Pupkin_
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 1
#1

Чтение из памяти и преобразование UTF-8 в ansi - C++

25.04.2016, 01:18. Просмотров 165. Ответов 2
Метки нет (Все метки)

День добрый подскажите как написать правильно.
Считываю из приложения допустим
char ник[32];
D0 A7 D0 B8 D0 BD D0 B3 D0 B8 D1 81 D1 85 D0 B0 D0 BD
(Чингисхан)

затем использую преобразование
C++
1
2
3
4
5
6
7
8
9
10
int length = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)ник, -1, NULL, 0);
        if (length > 0)
        {
            wchar_t* wide = new wchar_t[length];
            MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)ник, -1, wide, length);
            size_t convertedChars = 0;
            char* вывод_анси = new char[length];
            wcstombs_s(&convertedChars, вывод_анси, length, wide, _TRUNCATE);
            std::cout << "вывод_анси = " << вывод_анси << std::endl;
        }
всё выводится правильно.
Но если используются нестандартные символы, как пример
53 61 66 79 79 79 20 20 E3 83 84 00 40 36 C8 12
(Safyyy гѓ)
то вывод_анси ничего не выдаёт.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2016, 01:18     Чтение из памяти и преобразование UTF-8 в ansi
Посмотрите здесь:

Обработка .txt кодировка ANSI и UTF-8 (буква "я" в ANSI воспринимается как EOF) - C++
Есть следующий кусок кода: FILE* fp = fopen(&quot;G:\OPND1.txt&quot;, &quot;r&quot;); if (fp!=NULL) // если файл удалось открыть { while((ch =...

Перевод из кодировки UTF - 8 в ANSI - C++
Всем привет! Пишу прогу на линухе, результаты работы вывожу в html файл. Так вот когда открываю файл для прочтения с помощью браузера там...

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

Ansi c, запись и чтение структуры из файла. Накосячил от души - C++
Прошу прощения за глупую тему, но я мучаюсь уже долго, сам не могу решить проблему. структура struct rent { char...

Char *(UTF-8) -> char *(ANSI) - C++
Есть строка в кодировке UTF-8(если не ошибаюсь) типа char * Вот так ее я вижу в MSVC++10 - комментарии(оригинал - комментарии)...

Чтение файла в кодировке utf-8 и вывод в консоль - C++
Здорова! Пытаюсь прочитать файл в кодировке utf-8 (вот он ) и вывожу его в консоль, ничего не получается. Вот код: #include...

чтение из памяти - C++
господа допустим есть - int a=5; мне нужно получить адрес переменной &quot;а&quot; и из адреса получить значение т.е. - 5 . Как возможно это...

Чтение из памяти - C++
добрый день, нужна помощь у же не знаю что я не так делаю , вернее как мне нужно сделать void foo(char * inputfile, char * outputfile,...

Чтение из бинарного файла и преобразование строк в int - C++
Всем доброго времени суток, столкнулся с такой вот проблемой. У меня есть бинарный файл со следующей структурой: N - число эл-тов...

Чтение строки из памяти - C++
Пытаюсь обратиться к оперативной памяти и прочитать оттуда строку char fullChar = &quot;&quot;; char tempChar = ' '; ...

Чтение памяти из процессов - C++
Здравствуйте , знаю c++ на базовом уровне , хочу научится писать читы для CS:GO. Начать хочу с радархака. Посмотрел пару уроков , понял ,...

Чтение участка памяти - C++
Ищу, но не могу найти... Дело в том, что мне нужно в массиве выделять блоки по 4 элемента. Все было бы хорошо, если бы массив был бы у меня...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zer0mail
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,013
Записей в блоге: 1
25.04.2016, 07:36     Чтение из памяти и преобразование UTF-8 в ansi #2
Потому, что эти нестандартные символы не UTF-8, а непонятно что.
k1n3c7
10 / 10 / 14
Регистрация: 06.03.2016
Сообщений: 53
25.04.2016, 10:01     Чтение из памяти и преобразование UTF-8 в ansi #3
Что это за хекс символы? Какая кодировка? Это явно не ASCII, в ней символы от 0x20 до 0x7F.
На сколько я понял ты пытался использовать кодировку своего окружения, а когда подставил символы не из неё, у тебя вышли каракули.

Используй
C++
1
cout.imbue(locale("rus_rus.1251"));
Только вместо 1251 подставь свою кодировку. И это при условии, что твой компилятор поддерживает генерацию локалей из строки.

А ещё делать имена переменных кириллицей — плохой тон.

Добавлено через 6 минут
Ответ Создать тему
Опции темы

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