• Авторизация


В VisualStudio 2010 после компиляции неверно отображаются русские буквы 20-06-2011 13:23 к комментариям - к полной версии - понравилось!


Проблема: Во время работы программы неверно отображаются русские фразы в коде.

#include 
#include 
using namespace std;

int main() 
{
string a;
         cout << "Как Вас зовут?\n" ;
                   cin >> a;
         cout << "Привет, ";
         cout << a << "!\n";
system("pause");
return 0;
}

Причина: Изначально в редакторе кода Visual Studio (как и в других компиляторах и редакторах, работающих вOS Windows) установлена кодировка Кирилица Windows 1251,

а в консольном окне (в командной строке) используется кодировка UTF-8.

Решение № 1: Чтобы согласовать кодировки, необходимо сохранять файлы не в Windows 1251, а в DOS 866 Для этого в Visual Studio 2008 в меню ФАЙЛ -  Дополнительные параметры сохранения… вместо Кирилица (Windows) – кодовая страница 1251  выбрать Кирилица (DOS) – кодовая страница 866

Недостатки:
• Не все компиляторы позволяют сохранить файл в другой кодировке.
•  Нельзя включить украинскую раскладку
•  При закрытии решения и повторном открытии кода в редакторе Visual Studio – происходят искажения кода из-за несоответствия кодировок.

 Решение № 2: В нужном месте необходимо включать нужную кодировку отдельно для кода на русском языке и отдельно для вводимых с пользователем знаков.

#include
#include
using namespace std;

int main() {
         string a;
setlocale(LC_ALL,"Russian");      /* а лучше setlocale(0,""); для установки кода географической страны ((0,"")- текущие настройки операционной системы) */
cout << "Как Вас зовут?\n" ;

         cin >> a;
cout << "Привет, ";
setlocale(LC_ALL, ".OCP"); // или setlocale(0, ".OCP");  для возврата к начальным настройкам
cout << a<< "!" << endl ;

system("pause");
                   return 0;
}

Недостаток: Нет смысла пользоваться этим способом, если программа диалоговая, т.е. перемежевывается ввод с консоли и вывод из кода русского текста. В таком случае лучше Решение № 3

Решение № 3 Вначале включаем нужные кодировки для потока ввода и вывода с консоли.(но перед этим устанавливаем в консольном окне шрифт luchida cjnsole)

#include 
#include 
#include <windows.h>
using namespace std;

int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
         string a;
         cout << "Как Вас зовут?\n" ;
         cin >> a;
cout << "Привет, ";
cout << a <<<"!\n"
system("pause");
                   return 0;
}

ПРИМЕЧАНИЕ: Нельзя одновременно применять несколько способов, поскольку отображение русского текста будет снова искажено.

Воспользовался вторым способом (третий не сработал - получилась ошибка) - получилось.

Источник: http://lvvas.co.cc/index.php?option=com_content&view=article&id=115&Itemid=101

вверх^ к полной версии понравилось! в evernote
Комментарии (1):
Mayfly 20-06-2011-13:39 удалить
Насчет: ФАЙЛ - Дополнительные параметры сохранения… вместо Кирилица (Windows) – кодовая страница 1251 выбрать Кирилица (DOS) – кодовая страница 866 Если у вас английская версия, аналог: File - Advanced Save Options... вместо Cyrillic (Windows) - Codepage 1251 выбрать Cyrillic (DOS) - Codepage 866


Комментарии (1): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник В VisualStudio 2010 после компиляции неверно отображаются русские буквы | simple-pc - Компьютер, Интернет и программирование | Лента друзей simple-pc / Полная версия Добавить в друзья Страницы: раньше»