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
由于
答案 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 "ę"}
ę
ęę