oscript-library / opm

Пакетный менеджер OneScript
Apache License 2.0
66 stars 31 forks source link

Кириллица в консоли на английской Windows с кодовой страницей, отличающеся от CP 1251 #88

Open alexkmbk opened 6 years ago

alexkmbk commented 6 years ago

Прикладываю скриншот с проблемой. image

Можно конечно в ручную поменять кодовую страницу командой CHCP 1251, но может быть есть более крутое решение на уровне самого opm?

Я предлагаю выводить справочную инфу на английском в случае, если не CP 1251 или Windows не русифицированная.

nixel2007 commented 6 years ago

По идее кириллица должна нормально выводится при chcp 65001

alexkmbk commented 6 years ago

По идее кириллица должна нормально выводится при chcp 65001

Да, так и есть, но у меня в конкртеном случае (в силу определенных причин) по дефолту в консоли стоит другая. Возможно моя проблема очень редкая.

nixel2007 commented 6 years ago

Какая у вас ос?

alexkmbk commented 6 years ago

windows 10 pro

alexkmbk commented 6 years ago

https://msdn.microsoft.com/en-us/library/system.console.outputencoding(v=vs.110).aspx - можно проверять и ставить правильную кодовую страницу.

nixel2007 commented 6 years ago

Это наверное даже больше в движок. @EvilBeaver?

EvilBeaver commented 6 years ago

Это скорее к микрософту, чем ко мне. Если предлагаемое решение звучит, как:

"Определить текущую кодировку консоли, и если она не может выводить русский то задать такую кодировку, которая сможет выводить русский", то я пас.

И пас я из-за строчки, выделенной жирным. У меня пробелы в образовании, я не знаю, как надежно проверить данное условие.

Хотя, с удовольствием приму пулреквест.

EvilBeaver commented 6 years ago

Кстати, в oscript.cfg был параметр, который регулирует выхлоп односкрипта по умолчанию. И даже ключ запуска -encoding= есть.

alexkmbk commented 6 years ago

@EvilBeaver Но мы ведь точно знаем какие кодировки поддерживают кириллицу, а какие нет, я их все на память не приведу сходу, но их число конечно, а самые популярные так это должны быть 65001 и 1251

https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8_%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D1%8B

tsukanov-as commented 6 years ago

@alexkmbk Вопрос наверно не в тему... Но зачем вообще использовать CMD, когда в винде он заменен на повершел? Нравится страдать? )))

EvilBeaver commented 6 years ago

В павершеле тоже не все гладко с кодировками.

@alexkmbk проблема в том, что узнать уже установленную кодировку консоли толком нельзя из шарпа. Если приложение стартовало из консоли с кодировкой А, то приложение про это не знает. Я помню экспериментировал с этим и внятного результата не получил. Повторюсь, возможно, мне просто не повезло. Для решения задачи из первого поста рекомендую заюзать ключик -encoding или задать его глобально в конфиге oscript.cfg

tsukanov-as commented 6 years ago

@EvilBeaver Все там гладко. Просто использовать нужно юникод всегда

ps Вообще не пересекаюсь с 1251 и не понимаю на кой с ней вообще возиться в 2018 году

EvilBeaver commented 6 years ago

@tsukanov-as в условии задачи от @alexkmbk сказано что нельзя юникод и на то есть причины.

tsukanov-as commented 6 years ago

@EvilBeaver Ну мое дело вбросить. Страдать или нет это личный выбор каждого )

Asakra commented 5 years ago

Мне помогло: screenshot_1