Исходная кодовая страница Get-Content? - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть текстовый файл .txt, закодированный с помощью кодовой страницы Windows 1250. Мне нужно прочитать файл в системе Windows на английском / Западной Европе, которая использует кодовую страницу 1252.

Параметр Get-Content -Encodingожидает текстовую строку из фиксированного набора, который не включает другие кодовые страницы.

Я могу использовать GetEncoding (), но этот результат нельзя использовать в качестве параметра -Encoding для Get-Content.

Как я могу сказать Get-Content прочитать файл, используя кодировку 1250?

PS C:\src\t> [System.Text.Encoding]::GetEncoding('windows-1250')


IsSingleByte      : True
BodyName          : iso-8859-2
EncodingName      : Central European (Windows)
HeaderName        : windows-1250
WebName           : windows-1250
WindowsCodePage   : 1250
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
EncoderFallback   : System.Text.InternalEncoderBestFitFallback
DecoderFallback   : System.Text.InternalDecoderBestFitFallback
IsReadOnly        : True
CodePage          : 1250

1 Ответ

0 голосов
/ 30 декабря 2018

Как я могу сказать Get-Content прочитать файл, используя кодировку 1250?

Боюсь, вы не можете.Get-Content ожидает получения одного из значений перечисления FileSystemCmdletProviderEncoding, и они недостаточно мелкозернистые.Но вы можете легко использовать встроенные средства .NET для чтения файла.

$windows1250 = [System.Text.Encoding]::GetEncoding('windows-1250')
$path = ".\path\to\your\file.txt"
$text = [System.IO.File]::ReadAllText($path, $windows1250)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...