Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: console utf8.RU, unicode  (Прочитано 9138 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 22-12-2009 09:17 » 


как считать из файла unicode и utf8 строки? ( определения самой кодировки не требуется, тк считается что на ввод подается файл в нужной кодировке: либо utf8.RU, либо unicode )

как ее вывести на /subsystem:console?

Код:
	std::ifstream tf;
tf.open("text.txt");
std::string s;
        tf>>s;
cout<<s<<endl;
Записан

1n c0de we trust
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #1 : 22-12-2009 11:43 » 

Mayor, твоё решение полностью отвечает поставленной задаче.
Записан

Странно всё это....
Mayor
Специалист

ru
Offline Offline

« Ответ #2 : 23-12-2009 08:48 » 

LogRus, допустим даже если строка правильно считывается в нужной кодировке, что мне сложно проверить на msvc - но выводится то она точно крякозяблами, которые может и будут в формате utf8 если вывод сохранить в файл.

в общем потребовалось на тренировочной задаче: вывести русский текст в интерактивную консоль, я попытался сделать это в cp1251, это конечно в плане локализации не по феншую, но для тренировочной задачки приемлимо: проблемы начались после переноса тестового кода в другой проект - setlocale перестала действовать

единственное, что мне пришло в голову, что проблемы в непонимании настроек кодировки исходников в которых храниться строки типа:
cout<<"test рус"<<endl;
в msvc

на данный момент максимум, чего мне удалось добиться - это переносимости кода между разными проектами в msvc, который выдает строки в cp1251, только путем хранения этих строк в файле, созданном в редакторе, работающем в cp1251

а хотелось бы добиться вывода текста с файлов в форматах utf8 и unicode, без манипуляции с объектом cout

большинство нагугленных решений оказались неработающими, а единственное сработавшее, вместо заявленного вывода в unicode, выводит все в cp1251

Код:
	setlocale (LC_ALL,".1251"); // win32 текстовый редактор по умолчанию в cp1251
std::ifstream tf;
tf.open("text.txt"); // файл инструкций пользователю
std::string s;
while(tf) {
std::string t;
tf>>t;
s+=" ";
s+=t;
}
cout<<s<<endl;
Записан

1n c0de we trust
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 23-12-2009 09:46 » 

The set of available languages, country/region codes, and code pages includes all those supported by the Win32 NLS API except code pages that require more than two bytes per character, such as UTF-7 and UTF-8. If you provide a code page like UTF-7 or UTF-8, setlocale will fail, returning NULL.
То есть, MS не желает устанавливать utf8 в качестве локали. И выводить напрямую строки в utf-8 не получится.
Полагаю, проще всего руками из массива multibyte, содержащего utf8, сконвертировать в wchar_t и выводить. Соответственно, "юникод" (т.е. UCS2?) можно сразу читать в wchar_t.
« Последнее редактирование: 23-12-2009 09:49 от Вад » Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #4 : 23-12-2009 12:19 » 

Собственно всё уже сказано, считываешь как обычно, далее конвертируешь в wchar_t и выводишь на консоль через wcout
Записан

Странно всё это....
Mayor
Специалист

ru
Offline Offline

« Ответ #5 : 23-12-2009 16:59 » 

что-то я ничего не понял, привык под линухом выводить все в utf8, или в чем там - никаких проблем с локализацией: формат vim, g++, консоли - полностью контролируется переменными окружения, и никаких настроек кода не требует

а тут, что кросскомпиляция русский отваливается, что перенос проекта в msvc Жаль

если кому статьи какие по локализации понравились, дайте ссылку пожалуйста, а то у меня изучение вопросов локализации по msdn не получается
Записан

1n c0de we trust
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines