Powershell(也是cmd)无法识别特殊字符“±,”等

时间:2016-05-04 11:04:19

标签: powershell special-characters

Powershell无法识别特殊字符,例如:“±”,“ę”,“ć”等。 当使用类似的东西时:

PS C:\> Get-Content test.txt | findstr /c:something

??? something 

PS C:\> Get-Content test.txt | findstr /c:ę => nil

正如你可能会说任何特殊字符都会显示问号。

我用来运行ruby脚本,当我运行$stdin.gets.chomp时,脚本中的每个字符都按预期工作,带有特殊字符的输入显示为空框。

input = $stdin.gets.chomp

puts input => ▯

它显示空方框(早期版本的Powershell,它使用了问号)

我正在尝试https://blogs.msdn.microsoft.com/powershell/2006/12/11/outputencoding-to-the-rescue/,但这对我不起作用。

对于任何有用的建议,我将感激不尽。

编辑:将chcp更改为1250而不是$ OutputEncoding = [Console] :: OutputEncoding 当findstr / c显示“ąęą”某事:但是当findstr / c时显示任何东西:ę。在ruby中更改chcp会产生兼容性问题。

Edit2:我的其余研究都在Ruby compatibility error encoding

由于

1 个答案:

答案 0 :(得分:4)

尝试使用纯PowerShell,而不是与可执行文件混合( -match 而不是 findstr ):

Get-Content C:\temp\encoding.txt -Encoding Unicode| ? {$_ -match "ę"}

查找文件中的出现(当txt保存为Unicode时):

Get-Content C:\temp\encoding.txt -Encoding Unicode

ę 
asd
ęę
#ääöpl

我的文件包含4行,如上所示

Get-Content C:\temp\encoding.txt -Encoding Unicode| ? {$_ -match "ę"}

ę 
ęę