Параметр 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. Выход /  Изменить )

Google photo

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

Фотография Twitter

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

Фотография Facebook

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

Connecting to %s

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