我有一个使用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
答案 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)