Русские буквы в консольном приложении Core | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Захожу в VS 2017, выбираю "Файл \ Создать \ Проект \ Консольное приложение (.NET Core)", создаю проект. Вижу
Меняю на
И любуюсь на [attachment 27720 s1.png] Как можно русифицировать консоль? Куда копать? |
Re: Русские буквы в консольном приложении Core | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Полазил в свойствах консоли - чего либо нужного не нашёл. Понравилась надпись:
[attachment 27723 s2.png] |
Re: Русские буквы в консольном приложении Core | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Наверное, сильно удивлю... Но посоветую выбрать "Использовать прежнюю версию консоли". Недавно сталкивался с проблемой работы консоли в Win 10 (хотя и по другому поводу). После того, как выбрал "Использовать прежнюю версию консоли", проблема исчезла. Карочи, не факт, что поможет это, но вдруг?
|
Re: Русские буквы в консольном приложении Core | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Не знаю, на сколько правильно, но вот так работает:
[attachment 27724 s4.png] |
Re: Русские буквы в консольном приложении Core | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Не удивил Прежде, чем сюда написать - по всякому пробовал. Увы, не помогло... Можно ли как обойтись без этой строчки кода - например, что то указать в настройках проекта? |
Re: Русские буквы в консольном приложении Core | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Console.OutputEncoding управляет кодировкой консоли, но...
По умолчанию в Core включена лишь поддержка юникодной, ASCII и ещё какой-то одной кодировки (таким нехитрым способом разработчики хотят "заставить всех быть счастливыми" - т.е. перейти на юникод в консоли). Поэтому когда код инициализации выбирает какую кодировку использовать для консоли (при этом он опирается прежде всего на системную локаль - и у тебя по идее "видит" что должна быть 866 кодовая страница), он не находит нужную и делает fallback до utf-8 (поскольку поддержки 866 или 1251 в системе "по умолчанию" НЕТ) Через Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) можно добавить в коре все кодировки поддерживаемые в "полном" фреймворке, что по идее позволит работать с "классическими" кодировками в консоли. Тут конкретно твой вопрос Тут многа буков обсуждения и даже ссылка на коммит вводящий такое поведение (до того было ещё хуже - тупо эксепшн вываливался если консоль не настроена была на utf-8, ну или если не была подключена "CodePagesEncodingProvider" со всей прорвой поддерживаемых "классическим" фреймворком кодировок). ------------------ WBR, Igor |
Re: Русские буквы в консольном приложении Core | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Думал, что на какой то маленький косячок наткнулся, а тут - целый заговор однако...
Возможно, в Core 2.0 косяков будет меньше. А вообще - до 3-й версии, это всё "бета" А после 5-й опять переименуют и похерят совместимость.... |
Re: Русские буквы в консольном приложении Core | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не, ну их мотивы в принципе понятны - хз как там реализуется вся эта "кодостраничная многоязычность" на линуксах - utf-8 то там ого-го как работает, и он даже "по умолчанию" установлен для той же консоли в большинстве современных дистрибутивов. А коре - это попытка отделить сиамского близнеца .NET от его второй половины (винды) и позволить жить самостоятельно. Mono, похоже, не очень справляется. А тут - можно сразу кучу устаревшей дряни выкинуть (таки для вновь-рождённых систем/языков через 10-15 лет жизни накапливается гигантский груз "ошибок проектирования", и так охота всё перечеркнуть и написать с нуля "чистый аки слеза ребёнка" проект с учётом накопленного опыта).
Не советовал бы применять именно такое переприсваивание - это очень уж корявый костыль (да, он выглядит как г*но, пахнет как г*но, а значит он и есть оно)... Лучше уж тупо utf-8 присваивать и получать идентичное поведение и для "полных" версий фреймворка. Ну или подключить весь "багаж" кодировок - но тут хз как это работает на линуксах. На винде то все nls давно уж встроены в систему, а что там на юниксах... Впрочем, если для работы потребуется 1251 или 866 (например для входных/выходных файлов) - т.е. НЕ всё будет в юникоде работать, то, полагаю, без этого подключения по любому не обойтись... ------------------ WBR, Igor |
Re: Русские буквы в консольном приложении Core | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Утиная типизация г-кода |
© 2000-2024 Fox Club  |