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

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

Войти
Регистрация
Восстановить пароль
 
_Pupkin_
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 1
25.04.2016, 01:18     Чтение из памяти и преобразование UTF-8 в ansi #1
День добрый подскажите как написать правильно.
Считываю из приложения допустим
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
Посмотрите здесь:

C++ Обработка .txt кодировка ANSI и UTF-8 (буква "я" в ANSI воспринимается как EOF)
Текстовый файл UTF-8 сохранить как текстовый файл ANSI C++
C++ Перевод из кодировки UTF - 8 в ANSI
Конвертация из ASCII в UTF-32 или UTF-8 в UTF-32 C++
C++ чтение из памяти
C++ Unicode, UTF-8 и ANSI в одном консольном приложении. Можно ли "на лету" конвертировать массив строк?
Ansi c, запись и чтение структуры из файла. Накосячил от души C++
Чтение памяти не возможно C++
Char *(UTF-8) -> char *(ANSI) C++
C++ Чтение файла в кодировке utf-8 и вывод в консоль
Чтение из бинарного файла и преобразование строк в int C++
C++ Чтение из памяти

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

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

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

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

Добавлено через 6 минут
Yandex
Объявления
25.04.2016, 10:01     Чтение из памяти и преобразование UTF-8 в ansi
Ответ Создать тему
Опции темы

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