Параметр Encoding в PowerShell Core 6.0 Beta.9


В PowerShell целый ряд командлетов имеет параметр Encoding для задания используемой кодировки. Эти командлеты появлялись в течение многих лет, в результате параметр реализован несколькими способами и поддерживает разный набор кодировок. Причём набор этот сильно ограничен.

В PowerShell Core 6.0 Beta.9 мы получили унификацию. С одной стороны это хорошо, а с другой это breaking change — совместимость с существующими скриптами нарушается.

В чём суть унификации? Теперь у всех командлетов параметр Encoding работает одинаково и поддерживает не только традиционный для PowerShell набор имен кодировок (Unicode, BigEndianUnicode, Utf8, Utf8Bom, Utf8NoBom, Utf7, Utf32, Ascii, Oem — вы видите, что кое-что удалили и кое-что добавили), но также все кодировки, которые поддерживаются в .Net Core 2.0.

Плюс теперь «Byte» это не кодировка, а отдельный параметр —AsByteStream, который игнорирует параметр ​Encoding и позволяет работать с файлами, как с байтовыми потоками. Это логичное изменение, но опять же несовместимое.

Ну и наконец последние изменение — кодировка по умолчанию установлена в Utf8NoBom глобально, что влияет не только на файловые командлеты, но и на web командлеты и консоль.

Весной я делал специальное изменение (о чём писал тут ранее), чтобы на Windows вернуть текущее поведение (кодировка по умолчанию OEM), т.к. столкнулся с проблемами использования русского языка при работе с файлами в консоле. Сейчас MSFT опять решила унифицировать кодировку по умолчанию на всех платформах. Пробуйте и напишите в PowerShell Core repo на GitHub, если это вас не устраивает, потому что для RTM осталось совсем мало времени.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: