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

ANSI to Unicode - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Excogit8er
2 / 2 / 0
Регистрация: 23.10.2012
Сообщений: 66
03.12.2012, 17:16     ANSI to Unicode #1
Hi all. Вопрос к экспертам

Хочу сохранить строку текста (кириллица) в текстовый файл. Строка в ANSI, а нужно сконвертировать в Юникод.
Как сконвертировать в UTF-8 я разобрался, а как именно в Юникод (просто Юникод, не "Unicode Big Endian")?
Делается это в консольном приложении. Понятно, что это что-то простенькое, но что-то не пойму:

C++
1
2
3
4
5
6
7
int MAX = 1000
char plaintxt[MAX];
wchar_t unicodetxt[MAX];
 
MultiByteToWideChar(???, 0, plaintxt, MAX, unicodetxt, MAX);
 
wcout << unicodetxt << endl;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
03.12.2012, 17:43     ANSI to Unicode #2
CP_ACP попробуй в качестве кодировки. wcout не умеет выводить wchar'ы правильно под Windows.
Excogit8er
2 / 2 / 0
Регистрация: 23.10.2012
Сообщений: 66
03.12.2012, 17:45  [ТС]     ANSI to Unicode #3
Цитата Сообщение от Герц Посмотреть сообщение
CP_ACP попробуй в качестве кодировки. wcout не умеет выводить wchar'ы правильно под Windows.
Пробовал. Именно что CP_ACP. Не выводит вообще ничего - ни в файл (я пытался), ни в консоль.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
03.12.2012, 17:52     ANSI to Unicode #4
В коде который ты привел нет конверсии в UTF-8, что же ты в файл выводил тогда?
Excogit8er
2 / 2 / 0
Регистрация: 23.10.2012
Сообщений: 66
03.12.2012, 19:28  [ТС]     ANSI to Unicode #5
Цитата Сообщение от Герц Посмотреть сообщение
В коде который ты привел нет конверсии в UTF-8, что же ты в файл выводил тогда?
Вот так вот выглядит текст, который по идее должен выводить в файл:

C++
1
2
3
MultiByteToWideChar(CP_ACP, 0, plaintxt, MAX, unicodetxt, MAX);
outFile.imbue(locale("CP_ACP"));
outFile << unicodetxt << endl
Если это не правильно, то как правильно? С ANSI такой подход прекрасно работает. Файл, естественно, ассоциирован с потоком ofstream и все такое.

Добавлено через 1 час 31 минуту
Guys, неужели никто не знает?

Мне кажется, нужно не:
MultiByteToWideChar(CP_ACP, 0, plaintxt, MAX, unicodetxt, MAX);

а что-то другое вместо CP_ACP

Или не все так просто?
Yandex
Объявления
03.12.2012, 19:28     ANSI to Unicode
Ответ Создать тему
Опции темы

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