获取内容的源代码页?

时间:2018-12-29 23:01:43

标签: powershell internationalization

我有一个使用Windows代码页1250编码的纯文本.txt文件。我需要在使用代码页1252的英语/西欧Windows系统上阅读该文件。

Get-Content -Encoding参数需要一个固定的文本字符串,其中不包含其他代码页。

我可以使用GetEncoding(),但此结果不能用作Get-Content的-Encoding参数。

如何告诉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 :(得分:0)

  

如何告诉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)