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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
#1

Кодировки. Как сменить? Какая по умолчанию? Какую использовать? - C++

28.08.2013, 16:57. Просмотров 2856. Ответов 31
Метки нет (Все метки)

1) Какая кодировка стоит по умолчанию в C++ проектах visual studio 10?
2) Как эту кодировку сменить?
3) Как сделать возможным использование русского и других языков в программе

4) При получении пути к программе функцией GetModuleFileName и последующем выводе этого пути в консоль функцией cout, названия папок на русском языке выводятся непонятными символами. В самой переменной путь храниться в нормальном виде (Пригоден ли он для подключения dll по этому пути)?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2013, 16:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Кодировки. Как сменить? Какая по умолчанию? Какую использовать? (C++):

Какую и как использовать функцию, чтобы float сделать int? - C++
Какую и как использовать функцию, чтобы float сделать int?

Как лучше спроектировать систему и какую архитектуру разработки приложения использовать? - C++
Всем привет, ситуация такая: Сейчас появилось время и решил снова заняться разработкой САПР для машиностроения. Для чего? Считаю...

Какую библиотеку использовать? - C++
Только начал изучение Си. Нужно написать программу, которая выводит сегодняшнюю дату в формате дд.мм.гггг Собственно, вопрос в сабже...

Какую программу необходимо использовать? - C++
Здравствуйте, уважаемые программисты! Подскажите пожалуйста какой программой необходимо пользоваться для создания программ на языке C?

Какую библиотеку использовать под GUI? - C++
Подскажите какую библиотеку использовать лучше/удобнее.Я слышал только про Qt, WTL, GTK. Или все же WinAPI изучать?

Какую ide лучше использовать для c++ - C++
какой ide лучше использовать для c++?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 17:04 #2
Цитата Сообщение от Flaker Посмотреть сообщение
3) Как сделать возможным использование русского
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
В свойствах консоли выбрать шрифт: Lucida Console

Добавлено через 44 секунды
Цитата Сообщение от Flaker Посмотреть сообщение
1) Какая кодировка стоит по умолчанию в C++ проектах visual studio 10?
1251, в консоли - 866.
0
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 18:54  [ТС] #3
C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Не работает. С этим даже строка "Для продолжения нажмите любую клавишу" отображается криво.

1251, в консоли - 866.
Ведь в web специально ставят UTF-8, а не 1251, для мультиязычности? Почему же тут 1251?

Пишут, что предпочтительнее Unicode в проектах использовать. Как на него переключиться?
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 18:57 #4
Это сделали?
В свойствах консоли выбрать шрифт: Lucida Console
Добавлено через 1 минуту
Unicode в кодировках не поможет.
0
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 19:15  [ТС] #5
Сделал.

А что поможет?

С этим может и не поможет, но Unicode в любом случае выгоднее использовать. Как на него проект переключить то?
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 19:17 #6
Если win 7, то шрифт выбирать в настройках консоли по умолчанию.

Добавлено через 1 минуту
А что поможет?
А проверить?
Как на него проект переключить то?
В свойствах проекта: Общие - Набор символов.
0
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 21:14  [ТС] #7
В свойствах проекта: Общие - Набор символов.
Character Set у меня по умолчанию "Use Unicode Character Set"


В настройках шрифта в консоли по умолчанию "Consolas"
0
Миниатюры
Кодировки. Как сменить? Какая по умолчанию? Какую использовать?  
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 21:32 #8
И что? Нет вывода\ввода по русски? Код покажите и скрин консоли с неправильным выводом.
0
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 22:11  [ТС] #9
Фраза "Для продолжения нажмите любую клавишу", отлично показывается в консоли на русском языке, если не писать SetConsoleCP и SetConsoleOutputCP.

Вот текущий код:
C++
1
2
3
4
5
6
7
8
9
10
11
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    char abs_path[MAX_PATH];
    int pathst = GetModuleFileName(NULL, (LPWSTR)abs_path, MAX_PATH);
    for (int i = 0; i <= MAX_PATH; i++)
        cout << abs_path[i];
    cout << endl << endl;
 
    cout << "Это просто пробная строка на русском языке" << endl;
    system("pause");
0
Миниатюры
Кодировки. Как сменить? Какая по умолчанию? Какую использовать?  
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 22:22 #10
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    cout << "Это просто пробная строка на русском языке" << endl;
    
    system("pause");
}
Первый скрин - это когда в свойстах консоли выбран шрифт Lucida Console. Второй - когда точечные шрифты. Похож на ваш, правда? Делайте выводы...
0
Миниатюры
Кодировки. Как сменить? Какая по умолчанию? Какую использовать?   Кодировки. Как сменить? Какая по умолчанию? Какую использовать?  
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 22:33  [ТС] #11
У меня главная функция объявляется по другому:
C++
1
int _tmain(int argc, _TCHAR* argv[])
Она была написана автоматически самой студией... Может я проект не правильно создаю?

И еще инклуды:
C++
1
2
#include "stdafx.h"
#include <iostream>
В целом конечно все похоже.

Значит не только в SetConsoleCP у меня проблемы могут быть...

Стоп, а где вообще меняется шрифт для консоли... Может я не там меняю...
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 22:47 #12
Цитата Сообщение от Flaker Посмотреть сообщение
У меня главная функция объявляется по другому:
Это не влияет.
Цитата Сообщение от Flaker Посмотреть сообщение
Может я проект не правильно создаю?
Это тоже не влияет.
Цитата Сообщение от Flaker Посмотреть сообщение
Стоп, а где вообще меняется шрифт для консоли... Может я не там меняю...
В запущенной консоли, правой кнопкой по зоголовку окна, в свойствах по умалчанию. Шрифт: Lucida Console. Бывало, что с ним не получалось, тогда Consolas.

Добавлено через 1 минуту
ОС 7-ка?
1
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 22:51  [ТС] #13
Почему у меня строка "Для продолжения нажмите любую клавишу" у меня и шрифтом по дефолту показана нормально?

Если win 7, то шрифт выбирать в настройках консоли по умолчанию.
И да, у меня win 7

Изменил шрифт в открытой консоли ( думал надо в проекте ) и пробная строка отобразилась нормально, но путь почему то перестал отображаться даже английскими буквами...
0
Миниатюры
Кодировки. Как сменить? Какая по умолчанию? Какую использовать?  
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 22:53 #14
Цитата Сообщение от Flaker Посмотреть сообщение
Почему у меня строка "Для продолжения нажмите любую клавишу" у меня и шрифтом по дефолту показана нормально?
Потому что её система выводит.
1
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 22:56 #15
Отключить в проекте юникод:
C++
1
2
3
4
5
6
7
8
9
10
11
12
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    char abs_path[MAX_PATH];
    int pathst = GetModuleFileName(NULL, (LPSTR)abs_path, MAX_PATH);
    for (int i = 0; i <= MAX_PATH; i++)
        cout << abs_path[i];
    cout << endl << endl;
 
    cout << "Это просто пробная строка на русском языке" << endl;
    
    system("pause");
0
Миниатюры
Кодировки. Как сменить? Какая по умолчанию? Какую использовать?  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2013, 22:56
Привет! Вот еще темы с ответами:

Как сменить путь по умолчанию в командной строке CMD? - CMD/BAT
Подскажите как сменить путь по умолчанию в командной строке CMD. Пробовал HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment...

Как сменить имя Текстовый документ.txt создаваемого по умолчанию - Windows
Скажите пожалуйста как сменить имя файла - Текстовый документ.txt создаваемое Windows по умолчанию на другое.

Как сменить текст кнопки по умолчанию в созданном мной классе - C#
Вобщем начал изучать программирование недели 3 назад,начал с VB.Net 2010 чего то бейсик мне показался не очень(ограниченный он какой то)...

Awesomium. Как использовать прокси и сменить UserAgent? - C#
Как изменить User Agent? Как использовать прокси? Хочу сделать так: нажал на кнопку - изменился User Agent. Нажал на другую -...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.08.2013, 22:56
Ответ Создать тему
Опции темы

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