anvarichn (anvarichn) wrote,
anvarichn
anvarichn

Использование UTF-8 в cmd.exe

По умолчанию cmd.exe использует кодировку cp866. Текущую кодировку можно посмотреть командой chcp. Иногда возникает необходимость использовать в терминале юникод. Для этого необходимо использовать шрифт "Lucida Console" и переключить кодировку командой
>chcp <codepage>
Где параметр <codepage> для UTF-8 равен 65001






  • Post a new comment

    Error

    default userpic
  • 12 comments

=)

Anonymous

April 26 2008, 16:08:10 UTC 8 years ago

Спасибо за пост.
Привет! А ты случайно не знаешь как батники (cmd, bat) запускать, когда установлена кодировка Юникод (chcp 65001)? Если строка встречается в батнике - его выполнение на ней просто обрывается без каких-либо сообщений... (Юзал Гугл - там тоже народ интересуется, а толкового ответа нет - токмо обходные пути). ...А если меняю её предварительно, то мой батник глохнет на первой же команде (не комментарии)...
Нашёл подсказку: Юзайте chcp 65001 && [command] - всё равно как-то криво работает - мой файл в Юникоде (Винамповский плейлист m3u8) - выводит иероглифы вместо кирилицы (хотя консоль настроена отображать кирилицу).
...Сейчас проверил - в такой редакции выполнение батника не обрывается, но и chcp не отрабатывает корректно - кодировка просто не меняется! Хотя соответствующее сообщение выводится!!! (Проверял для Win-кодировки - 1251). А если в отдельной строке - 1251 работает, а 65001 - нет! Выводится сообщение о смене кодировки и выполнение прерывается :(
Попробуй скрипт переписать на powershell.
Кстати, что делает твой скрипт?
Что-то хитрое с плейлистом?
Прям заинтриговал ))

Я немного слышал про Повершел - вроде как круто, только будут ли его скрипты работать на любых других компах? Я пытаюсь писать скрипты используя родные средства Win2k/XP/2003 Server (x32). Для скриптов Powershell не потребуется установка этого самого Шела?

А скрипт мой всего-то копирует треки, указанные в плейлисте, на МП3-плеер (или любое другое указанное пользователем место). Winamp умеет копировать файлы на сменные устройства, но настроек копирования у него нет (по крайней мере до версии 5.5) - копирует он треки беря инфу из ИД3-тагов - создаёт соответствующие папки: Исполнитель\Альбом\Трек. А иногда хочется чтобы вся необходимая музыка была в одной папке (типа "избранное") - вот это я и хочу научить делать свой скрипт.

Для копирования по обычному винамповскому m3u-плейлисту имеющему кодировку виндовс достаточно одного цикла for:
@echo off
chcp 1251 > nul
for /f "eol=# delims= usebackq" %%a in ("%1") do ((chcp 866 > nul) & (if not exist "%2\%1\" md "%2\%1")) & xcopy "%%a" "%2\%1\*.*")
В одну строку почему-то работает не корректно. Я здесь использовал "&" чтобы можно было одной строкой выполнять тело цикла, но можно и разными. Первым параметром является имя файла-плейлиста с расширением, вторым диск назначения (x:). Скрипт автоматически создаёт папку по имени плейлиста).

Ещё хочу сделать копирование по листам m3u8 - отличается только кодировкой и ещё первую строку пропускать надо, pls (тут сложнее - структура другая), ещё хочу прикрутить автоматическое определение типа файла, и ещё choice.com заиспользовать для красоты...

Вообще ещё много чего можно для "дружественности" интерфейса прикрутить - счётчики всякие например... Пока энтузиазму хватит буду усложнять :)

А с Юникодом пока ничего не получается :( Даже запуск в этом же батнике cmd /u /c call utf.cmd %1 %2 а в utf.cmd приведённое выше содержимое только без вызовов chcp и то не помогает - текущей кодовой страницей всё равно оказывается 866, выполнение chcp 65001 также приводит в прерыванию выполнения, а при объединении строк chcp сразу не срабатывает... Всё забью на Юникод!

Пробовал сохранять батник блокнотом - в Юникоде. Понравилось следующее: выбор кодировки: ANSI, Юникод, Юникод Big Endian, UTF-8. Понял что надо бросать это дело - ведь нету знаний чем Юникод от UTF-8 отличается... :(

Конечно скрипты на Powershell будут работать только на тех компах,
где он собс-но установлен. Для XP, win2003 его надо скачивать отдельно.
Для висты и win2008 он есть в поставке (но по-дефолту все равно не ставится).
Кроме того он требует для себя .net framework. Кстати именно из-за этого
нельзя поставить powershell на "windows server 2008 core" (Это не продукт, а минимизированный вариант инсталляции).
Это все, конечно, плохо!

Но, есть и плюсы:
-язык сам по-себе очень хорош
-нет проблем с юникодом
-M$ его активно продвигает
-в windows server 2008 R2, к-й выйдет примерно через год powershell'у отведена немалая роль

Так что, ИМХО есть как минимум повод познакомиться с этим средством.

Вообще то Powershell уже сейчас встроен по умолчанию в Windows Server 2008 так что R2 можно не ждать чтобы начать использовать этот замечательный язык.

То что его нет в Server Core абсолютно не беда т.к Powershell может управлять системами удаленно. Не обязательно исполнять его на сервере локально.

Кстати вот тут про него есть бесплатная книга http://blogs.technet.com/abeshkov/archive/2008/12/24/3172943.aspx
Ну и конечно стоит посмотреть на редактор PowerGUI http://powergui.org

спасибо дружище помог переход на 866
http://vkontakte.ru/id118391459
бесплатные секс знакомства в николаеве
гей знакомства кому за 30
секс знакомства в соликамске (http://vkontakte.ru/id118346125)
[url=http://vkontakte.ru/id118378696]виртуальный секс web камера[/url]
Слава гуглу!
Полдня уже колдую над кодировками (изначально были кривые кодировки в логах билдмашины)
Много чего переделала, но в итоге этот совет нашелся и помог.

Спасибо!

lexleogryfon

February 2 2012, 23:28:12 UTC 5 years ago Edited:  February 2 2012, 23:28:39 UTC

спасибо
Почему Японцы хотят вкладывать в Курилы. Есть Сибирь, ДВ, Урал. Вкладывай на здоровье. А пока не признают суверенитет России над Курилами вкладывать в острова запретить.И неважно сколько это лет потребуется. Хоть тысячу. А если власти начали обсуждать этот вопрос, значит решение продать Курилы уже сформировано. Осталось это народу как-то втюхать