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

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

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

Char *(UTF-8) -> char *(ANSI) - C++

22.03.2014, 17:52. Просмотров 1117. Ответов 2
Метки нет (Все метки)

Есть строка в кодировке UTF-8(если не ошибаюсь) типа char *
Вот так ее я вижу в MSVC++10 - комментарии(оригинал - комментарии)
C++
1
char sInvalid[64] = "комментарии";
Как преобразовать ее в кодировку ANSI? Т.е результат должен быть такой:
C++
1
char sValid[64] = "комментарии";
Или такой
C++
1
wchar_t sValid[64] = "комментарии";
------
Пробовал так:
C++
1
2
3
4
wchar_t sValid[64];
char sInvalid[64] = "комментарии";
 
memcpy(sValid, sInvalid, 64);
В результате получаю корейские символы
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2014, 17:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Char *(UTF-8) -> char *(ANSI) (C++):

C++, UTF-8, char - C++
Приветсвую всех. Правильно ли я рассуждаю: 1) Если мне нужно использовать символы юникода в программе (самые немыслимые иероглифы,...

UTF-8 - русские символы в char посимвольно - C++
Здравствуйте, в проекте используется UTF-8, и в char и в string я не могу обратиться к русскому символу, как к элементу массива, т.к. в...

масив Char (Windows-1251, ASCII, UTF-8) - C++
Перехожу с мелкомяхких на linux (с Delphi на С++), так как все мои программы занимаются обработкой строк то решил сначала разобраться со...

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& - C++
astxx::manager::connection::connection(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned short); ...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' - C++
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void crpost(const statep &amp;struc1) { ...

Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь( - C++
Всем доброго дня! У меня такая проблемка.... написал программу, но сначала она ругалась на Cannot convert char* to char теперь вроде...

2
Убежденный
Ушел с форума
Эксперт С++
15708 / 7219 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
22.03.2014, 20:34 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сначала вызывайте MultiByteToWideChar.
Получите строку в кодировке UTF-16.
А затем из этой UTF-16 можно попробовать выполнить
конвертацию в нужную кодировку - WideCharToMultiByte.
1
17 / 17 / 1
Регистрация: 09.03.2013
Сообщений: 65
23.03.2014, 16:25  [ТС] #3
Убежденный, спасибо, получилось. Только при использовании UTF-16 выдавало ошибку, использовал UTF-8
Вот код, может быть пригодится:
C++
1
2
3
4
5
6
7
8
char sInvalid[] = "comments | комментарии";//комментарии
 
int size = strlen(sInvalid)+1;
wchar_t *wsValid = new wchar_t[size];
char *sValid = new char[size];
    
MultiByteToWideChar(CP_UTF8, 0, sInvalid, -1, wsValid, size);
WideCharToMultiByte(CP_ACP, NULL, wsValid, -1, sValid, size, NULL, NULL);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2014, 16:25
Привет! Вот еще темы с ответами:

Сделать преобразование unsigned char в char, а затем типу int - C++
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char - для копеек. Собственно что мне...

array char* to char* (значения массива указателей в один указатель) - C++
Как сложить(или вывести в формате char*) все значения массива указателей(char *) воедино, то есть сложить строки и назначить результату...

Ошибка: call of overloaded 'strchr(char&, char)' is ambiguous - C++
Здравствуйте, прога почему-то ругается на функцию strchr, вот кусок кода: #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include...

Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*) - C++
Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа Помогите...


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

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

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