Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18024 / 7727 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16

Русский текст в консоли

19.12.2012, 15:59. Показов 458742. Ответов 2

Author24 — интернет-сервис помощи студентам
Написав в блокноте Windows (Notepad.exe) батник 1.bat такого содержания
Bash
@Echo off
Echo Введите текст. Завершение ввода - комбинация Ctrl+Z {ENTER}
copy con temp.txt
мы получим "абракадабру":



Почему так происходит?
Консоль работает в кодировке DOS (codepage 866).
Блокнот Windows создает пакетный файл в кодировке WIN (codepage 1251).

Поэтому, когда Вы запускаете файл, консоль отображает его в своей (DOS) кодировке.


Решение (3 способа):

1 способ (сохранение файла в кодировке OEM-866):
Скачаем текстовый редактор, поддерживающий сохранение текста в кодировке OEM-866 (DOS):

AkelPad

Чтобы создать новый файл в кодировке DOS:
Меню "Файл" -> "Сохранить как..." -> из выпадающего списка выбрать "Кодировка OEM-866".
Файл должен иметь расширение bat или cmd.

Для себя я настроил AkelPad так, чтобы он всегда сохранял в кодировке OEM-866 (Настройки -> Параметры -> Кодировка по-умолчанию -> OEM-866.)

Скачать.
Сам пользуюсь вот такой модификацией что и Вам советую. Скачать.
Или качаем с официального сайта.

Чтобы правильно сконвертировать уже имеющийся в редакторе код с кириллицей:
Войти в редактор.
1) Ctrl+A, скопировать код.
2) Удалить код.
3) Меню "Кодировки" -> выбрать "Сохранить в DOS-866".
4) Вставить код.
5) Сохранить, запустить.

Полезные горячие комбинации клавиш:
Запуск скрипта (Ctrl + F5)
На весь экран (F11)
Сохранить (Ctrl + S)
Открыть в кодировке WIN (Alt + W)
Открыть в кодировке DOS (Alt + D)





Notepad++

Чтобы создать новый файл в кодировке DOS:
Меню "Кодировки" -> "Кодировки" -> "Кириллица" -> "OEM-866"
"Файл" -> "Сохранить как..." -> пишем имя файла и расширение bat или cmd -> Сохранить.

Чтобы правильно сконвертировать уже имеющийся в редакторе код с кириллицей:
Войти в редактор.
1) Ctrl+A, скопировать код.
2) Удалить код.
3) Меню "Кодировки" -> "Кодировки" -> "Кириллица" -> "OEM-866"
4) Вставить код.
5) Сохранить, запустить.

Скачать редактор с официального сайта.




Помните: в редакторе не должно быть видно "крякозябер", иначе это значит: Вы неправильно скопировали код.
В Windows Vista, 7 часто бывает, что код с форума "портиться" в буфере. Выход: когда копируете код, убедитесь, что включена русская раскладка клавиш.


2 способ (смена кодовой страницы):
Сменить кодовую страницу консоли.

А именно, в начале пакетного файла написать:
Bash
1
chcp 1251 >nul
Это поможет Вам только частично.
Что можно?
Bash
md "Моя папка"
Создаст папку "Моя папка" с нормальными символами.

Что нельзя:
Bash
Echo Мой текст
Все равно выведет текст "абракодаброй".
Кроме того, текст сообщений от команд консоли тоже станет нечитаемым.

Но русский текст все равно можно вывести таким трюком:

2а)

Bash
1
2
chcp 1251 >nul
for /f "delims=" %%A in ("Мой текст") do >nul chcp 866& echo.%%A
2б)

Bash
1
2
3
4
5
chcp 1251 >NUL
set x=Русский текст
chcp 866 >NUL
echo %x%
pause
3 способ (для ленивых):
(или для тех, кто не может установить себе продвинутый редактор по религиозным или др. причинам )
Конвертируем Batch-файл правым кликом мыши ^_^

Пример для Windows 7:
1) Пуск -> в поисковой строке набрать Shell:SendTo
2) Откроется папка, в которую нужно скопировать RecodeToDOS.vbs из этого архива.

Использование:
Правый клик мыши по Batch-файлу -> Отправить -> RecodeToDOS
Файл будет заменен перекодированной версией.

Код исходника

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
On Error Resume Next
FullName = WScript.Arguments(0)
 
With CreateObject("ADODB.Stream")
    .Type = 2
    .Charset = "windows-1251"
    .Open
    .LoadFromFile FullName
    Text = .ReadText()
    .Close
 
    .Charset = "cp866"
    .Open
    .WriteText (Text)
    .SaveToFile FullName, 2
    .Close
End with
Старый вариант: перекодировщик на языке Batch. Может некорректно работать со спецсимволами.


Здесь достаточно перетянуть Ваш файл на нижеуказанный файл-сценарий.
Ваш исходный файл будет заменён перекодированным вариантом.

Скачать код архивом.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@echo off
if "%1"=="" (Echo Перетащите .bat/.cmd файл на этот сценарий& Goto :ext)
Setlocal
set Src=%~dpnx1
chcp 1251> nul
for /f "UseBackQ delims=" %%a in ("%Src%") do (
  if not defined cpReady (
    chcp 866> nul
    set CpReady=True
  )
  call :convert "%%a"
)
Echo Файл %~nx1 перекодирован.
:ext
pause>nul
goto :eof
 
:convert
if Defined Write (
    echo %~1>>"%Src%"
) else (
    Set Write=True
    echo %~1>"%Src%"
)



Способ 3а. Ухищренный (для истинных кодеров).
Писать в блокноте кириллический текст в виде псевдосимволов (т.е. вручную перекодировать) ALT + код символа (на цифровой клавиатуре) Обсуждаем здесь

Способ 4. Он-лайн перекодировщик

Способ 5. Использовать стороннее ПО.


Обсуждения прошу вести в теме: Русский язык в командной строке
Обзор других редакторов: Кто какие программы использует для написания батников?

Миниатюры
Вложения
Тип файла: zip RecodeToDOS.zip (361 байт, 2450 просмотров)
37
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2012, 15:59
Ответы с готовыми решениями:

Русский текст в консоли
Пользуюсь книгой для обучения visual с++, дан базовый код #include <iostream> using std::cout; using std::endl; int main() { ...

Русский текст в консоли
Мне нужно чтобы когда я напишу свое имя по русски и оно выводиться по русски у меня не выходит так выводит разные "крякозавры", ...

Русский текст в консоли
Проблема банальная - русский текст в консоли. До конца в кодировках я так и не разобрался, поэтому прошу помощи. Я нашел 3 способа как...

2
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
19.12.2012, 18:55
В дополнение к теме "Русский текст в консоли"
Для постоянной работы с батниками удобно пользоваться редактором Scite-ru.
Нужно только запомнить три клавиши:
Alt + F9 - Переключиться в кодировку cp866
F5 - Выполнить батник в отдельном окне
F7 - Вывести результат выполнения батника в консоль Scite

У Scite есть огромный недостаток, он не позволяет копировать тексты написанные в кодировке cp866.
Поэтому приходится пользоваться следующим батником:
Bash
1
clip < "%~1"
Продвинутые пользователи могут подключать батники и другие скрипты как плагины к Scite-Ru.
4
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18024 / 7727 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
08.06.2013, 18:34  [ТС]
Русский текст в консольном приложении C++

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cstdlib>
 
int main()
{
    setlocale (0, "rus");
    cout << "Русский текст";
 
    system ("pause>nul");
    return 0;
}
5
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2013, 18:34
Помогаю со студенческими работами здесь

Кодировка, русский текст в консоли
Привет Ребята. Возник такой вопрос. Если создать новый проект в lazarus'e и написать к примеру в коде программы: writeln('Привет...

Русский текст в консоли (не одно и то же)
Здравствуйте. В прикрепленной выше темке нашел вот такую программу: #include&lt;iostream.h&gt; #include&lt;cmath&gt; ...

После компиляции в консоли не выводится русский текст
а подскажите такой вопрос.Писал в npp самую простенькую прогу public class HelloWorld { public static void main(String args) { ...

Рисование ASCII кодами и русский текст в консоли
Всем добрый вечер. И вот такой вопрос есть. Сначала печатаю в консоли текст а под ним горизонтальную линию. Только вместо линии...

Как с консоли записать в файл русский текст
Как с консоли записать в файл русский текст? Если так, то пишется только английский: #include &lt;iostream&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
3
Закрытая тема Создать тему
Опции темы

Новые блоги и статьи
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru