Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/141: Рейтинг темы: голосов - 141, средняя оценка - 4.96
3 / 3 / 1
Регистрация: 07.07.2012
Сообщений: 90
1

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

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

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

4) При получении пути к программе функцией GetModuleFileName и последующем выводе этого пути в консоль функцией cout, названия папок на русском языке выводятся непонятными символами. В самой переменной путь храниться в нормальном виде (Пригоден ли он для подключения dll по этому пути)?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2013, 16:57
Ответы с готовыми решениями:

Как сменить путь по умолчанию в командной строке CMD?
Подскажите как сменить путь по умолчанию в командной строке CMD. Пробовал...

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

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

Как сменить поиск по умолчанию в FVD Speed Dial (Chrome) c Яндекс на Google?
Помогите пожалуйста править расширение FVD Speed Dial для Хрома. Пытаюсь найти строки скрипта, где...

31
5498 / 4893 / 831
Регистрация: 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
3 / 3 / 1
Регистрация: 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
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 18:57 4
Это сделали?
В свойствах консоли выбрать шрифт: Lucida Console
Добавлено через 1 минуту
Unicode в кодировках не поможет.
0
3 / 3 / 1
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 19:15  [ТС] 5
Сделал.

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

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

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


В настройках шрифта в консоли по умолчанию "Consolas"
Миниатюры
Кодировки. Как сменить? Какая по умолчанию? Какую использовать?  
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 21:32 8
И что? Нет вывода\ввода по русски? Код покажите и скрин консоли с неправильным выводом.
0
3 / 3 / 1
Регистрация: 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
5498 / 4893 / 831
Регистрация: 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
3 / 3 / 1
Регистрация: 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
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 22:47 12
Цитата Сообщение от Flaker Посмотреть сообщение
У меня главная функция объявляется по другому:
Это не влияет.
Цитата Сообщение от Flaker Посмотреть сообщение
Может я проект не правильно создаю?
Это тоже не влияет.
Цитата Сообщение от Flaker Посмотреть сообщение
Стоп, а где вообще меняется шрифт для консоли... Может я не там меняю...
В запущенной консоли, правой кнопкой по зоголовку окна, в свойствах по умалчанию. Шрифт: Lucida Console. Бывало, что с ним не получалось, тогда Consolas.

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

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

Изменил шрифт в открытой консоли ( думал надо в проекте ) и пробная строка отобразилась нормально, но путь почему то перестал отображаться даже английскими буквами...
Миниатюры
Кодировки. Как сменить? Какая по умолчанию? Какую использовать?  
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 22:53 14
Цитата Сообщение от Flaker Посмотреть сообщение
Почему у меня строка "Для продолжения нажмите любую клавишу" у меня и шрифтом по дефолту показана нормально?
Потому что её система выводит.
1
5498 / 4893 / 831
Регистрация: 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
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 22:58 16
Или не отключать, но тогда так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    wchar_t abs_path[MAX_PATH];
    int pathst = GetModuleFileName(NULL, (LPWSTR)abs_path, MAX_PATH);
    for (int i = 0; i <= MAX_PATH; i++)
        wcout << abs_path[i];
    cout << endl << endl;
 
    cout << "Это просто пробная строка на русском языке" << endl;
    
    system("pause");
Миниатюры
Кодировки. Как сменить? Какая по умолчанию? Какую использовать?  
1
3 / 3 / 1
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 22:59  [ТС] 17
Отключить в проекте юникод:
Это в Character Set?

Что выбрать из:
1) Non-set
2) Unicode
3) Multi-Byte
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 23:03 18
Цитата Сообщение от Flaker Посмотреть сообщение
Это в Character Set?
1) Non-set
Цитата Сообщение от alsav22 Посмотреть сообщение
Или не отключать, но тогда так:
16 пост.
1
3 / 3 / 1
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 23:07  [ТС] 19
16 пост.
Попробовал, но теперь в консоль печатает только С:\Users\

( Код прежний )
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 23:12 20
А лучше так:
C++
1
2
3
4
5
6
7
8
9
10
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    wchar_t abs_path[MAX_PATH];
    int pathst = GetModuleFileName(NULL, (LPWSTR)abs_path, MAX_PATH);
    wcout << abs_path << endl;
    
    cout << "Это просто пробная строка на русском языке" << endl;
    
    system("pause");
Добавлено через 1 минуту
Цитата Сообщение от Flaker Посмотреть сообщение
Попробовал, но теперь в консоль печатает только С:\Users\
А как же мой скрин?

Добавлено через 1 минуту
Цитата Сообщение от Flaker Посмотреть сообщение
Попробовал, но теперь в консоль печатает только С:\Users\
После Users\ , что должно быть?
1
28.08.2013, 23:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.08.2013, 23:12
Помогаю со студенческими работами здесь

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

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

Кодировки строк по умолчанию
Имеется дивная функция на плюсах. Хавает utf-16 юникод, затем по индексу сбрасывает 16 битные...

Как заставить Clang использовать MinGW по умолчанию?
Приветствую, форумчане. Я пишу на C++ в среде Windows 10 (x64). В качестве компилятора использую...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru