В очередной раз матерясь на несуразную работу Windows с кодировками, нашёл этот текст, объясняющий и в какой-то мере решающий эту проблему.
Написав в блокноте Windows (Notepad.exe) батник 1.bat такого содержания
Почему так происходит?
Консоль работает в кодировке DOS (codepage 866).
Блокнот Windows создает пакетный файл в кодировке WIN (codepage 1251).
Поэтому, когда Вы запускаете файл, консоль отображает его в своей (DOS) кодировке.
Решение (3 способа):
1 способ (сохранение файла в кодировке OEM-866):
Скачаем текстовый редактор, поддерживающий сохранение текста в кодировке OEM-866 (DOS):
AkelPad
Notepad++
Помните: в редакторе не должно быть видно "крякозябер", иначе это значит: Вы неправильно скопировали код.
В Windows Vista, 7 часто бывает, что код с форума "портиться" в буфере. Выход: когда копируете код, убедитесь, что включена русская раскладка клавиш.
2 способ (смена кодовой страницы):
Сменить кодовую страницу консоли.
А именно, в начале пакетного файла написать:
Что можно?
Что нельзя:
Кроме того, текст сообщений от команд консоли тоже станет нечитаемым.
Но русский текст все равно можно вывести таким трюком:
2а)
3 способ (для ленивых):
(или для тех, кто не может установить себе продвинутый редактор по религиозным или др. причинам :) )
Конвертируем Batch-файл правым кликом мыши ^_^
Пример для Windows 7:
1) Пуск -> в поисковой строке набрать Shell:SendTo
2) Откроется папка, в которую нужно скопировать RecodeToDOS.vbs
Использование:
Правый клик мыши по Batch-файлу -> Отправить -> RecodeToDOS
Файл будет заменен перекодированной версией.
Исходник:
Писать в блокноте кириллический текст в виде псевдосимволов (т.е. вручную перекодировать) ALT + код символа (на цифровой клавиатуре).
Способ 4. Он-лайн перекодировщик
Способ 5. Использовать стороннее ПО.
Написав в блокноте Windows (Notepad.exe) батник 1.bat такого содержания
мы получим "абракадабру":
@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
Notepad++
Помните: в редакторе не должно быть видно "крякозябер", иначе это значит: Вы неправильно скопировали код.
В Windows Vista, 7 часто бывает, что код с форума "портиться" в буфере. Выход: когда копируете код, убедитесь, что включена русская раскладка клавиш.
2 способ (смена кодовой страницы):
Сменить кодовую страницу консоли.
А именно, в начале пакетного файла написать:
chcp 1251 >nulЭто поможет Вам только частично.
Что можно?
md "Моя папка"
Создаст папку "Моя папка" с нормальными символами.Что нельзя:
Echo Мой текстВсе равно выведет текст "абракодаброй".
Кроме того, текст сообщений от команд консоли тоже станет нечитаемым.
Но русский текст все равно можно вывести таким трюком:
2а)
2б)chcp 1251 >nul for /f "delims=" %%A in ("Мой текст") do >nul chcp 866& echo.%%A
chcp 1251 >NUL
set x=Русский текст chcp 866 >NUL echo %x% pause
(или для тех, кто не может установить себе продвинутый редактор по религиозным или др. причинам :) )
Конвертируем Batch-файл правым кликом мыши ^_^
Пример для Windows 7:
1) Пуск -> в поисковой строке набрать Shell:SendTo
2) Откроется папка, в которую нужно скопировать RecodeToDOS.vbs
Использование:
Правый клик мыши по Batch-файлу -> Отправить -> RecodeToDOS
Файл будет заменен перекодированной версией.
Исходник:
Способ 3а. Ухищренный (для истинных кодеров).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
Писать в блокноте кириллический текст в виде псевдосимволов (т.е. вручную перекодировать) ALT + код символа (на цифровой клавиатуре).
Способ 4. Он-лайн перекодировщик
Способ 5. Использовать стороннее ПО.