![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.06.2016
Сообщений: 66
|
![]()
Приветствую уважаемые.
По умолчанию в code::blocks - UTF-8 В Виндовс - 1251 После компиляции (в GCC) если в заголовке окна русские буквы, то отображаются "кракозябры". Как исправить чтобы русский текст отображался корректно? В шаблоне Code::Blocks такой код: Код:
|
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 08.03.2023
Сообщений: 24
|
![]()
Добавьте следующий код в начало вашей программы:
Код:
|
![]() |
![]() |
![]() |
#3 | ||
Форумчанин
Регистрация: 26.10.2022
Сообщений: 119
|
![]()
druidvic, используйте Unicode-ные WinAPI-шные структуры и функции:
Код:
TCHAR → WCHAR (16-битный элемент строки) _T("abc") → L"abc" (строковый литерал, который в памяти программы будет храниться в кодировке UTF-16) Эту кодировку лучше забыть. Сейчас подходит разве что для учебных заданий. Или для какой-то очень жёсткой экономии памяти. Цитата:
Код:
Цитата:
|
||
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 05.06.2016
Сообщений: 66
|
![]()
Спасибо что откликнулись.
Пытаюсь, но вот на MSDN не скажу что очень понятно ![]() Учиться приходится по старым примерам и книгам. Таких нюансов как THAR-WCHAR, L - _T и т.п. там просто нет. Нашел пока Conventions for Function Prototypes но этого очень мало. Не сочтите за наглость дайте ссылку на спецификацию на С++ (оригинальную). А то в ссылках с Яндекса и Гугла совсем запутался. Столько мусора ![]() |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 26.10.2022
Сообщений: 119
|
![]()
druidvic, это у Microsoft издавна странный подход: все WinAPI-шные структуры и функции, работающие с текстом, сделаны в двух вариантах: A (ANSI) и W (wide). Разработчикам предлагалось писать код в обобщённом стиле:
Код:
1. Для линейки Windows 95/98/Me без макроса UNICODE: TCHAR превращается в char, _T("abc") превращается в "abc" Макрос SetWindowText превращается в SetWindowTextA, функция работает с текстом в ANSI-кодировке. Если Windows настроена на русский язык, то ANSI-кодировка -- это code page 1251. 2. Для линейки Windows NT/2000/XP/... с макросом UNICODE: TCHAR превращается в WCHAR (16-битный), _T("abc") превращается в L"abc" Макрос SetWindowText превращается в SetWindowTextW, функция работает с текстом в кодировке UTF-16. Линейка Windows 95/98/Me закрыта, осталась только линейка Windows NT/2000/XP/..., она поддерживает и A-функции тоже, они реализованы как обёртки над W-функциями. Но лучше использовать W-функции, потому что Unicode. В C++, WCHAR -- это то же самое, что wchar_t. Для работы с ним есть стандартные функции (wcslen) и классы (std::wstring). А TCHAR и макрос _T уже можно не использовать. |
![]() |
![]() |
![]() |
#6 | |
Пользователь
Регистрация: 05.06.2016
Сообщений: 66
|
![]() Цитата:
![]() Какой компилятор посоветуете? А то Code::Blocks 20.03, а GCC в нем - 1998 GNU C++. Староват вроде как уже. |
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]()
В чем странность? Сначала были анси, потом ОС развивалась и появились юникод версии + совместимость. У вас есть не странный подход?
|
![]() |
![]() |
![]() |
#8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,427
|
![]()
В Settings - Compiler можно поставить галочку какому стандарту следовать (GNU/ISO, 98/11/14/17).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#9 | |
Пользователь
Регистрация: 05.06.2016
Сообщений: 66
|
![]()
BDA, пробовал.
Цитата:
Последний раз редактировалось druidvic; 10.03.2023 в 21:28. |
|
![]() |
![]() |
![]() |
#10 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,427
|
![]()
druidvic, ну не знаю, у меня в 20.03 доступны c++98, gnu++98, c++11, gnu++11, c++14, gnu++14.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C# как сделать кодировку МКТ-2 | Krasi | Общие вопросы .NET | 1 | 10.11.2015 11:17 |
Изменить кодировку из php | Gefo | PHP | 2 | 27.02.2013 17:22 |
ie не меняет кодировку | CodeNOT | PHP | 3 | 10.02.2012 03:22 |
Определить кодировку | Shouldercannon | PHP | 1 | 31.07.2010 18:39 |
Про кодировку... | Lich | Работа с сетью в Delphi | 5 | 29.12.2008 10:32 |