Powershell输出格式错误的文件名

时间:2013-08-07 16:41:35

标签: java windows eclipse powershell

我正在使用此命令:

Get-ChildItem | Foreach-Object {$_.BaseName} > file_names.txt

将当前目录中的文件名打印到文件中(没有最终扩展名)。在记事本中打开文件名会显示正确打印的文件名。很简单,是的。凉。

我的问题是,在使用Java中的BufferedReader读取文件名时,文件名出现错误。例如,

20100916_090350_S1_1_auto获得test_1.Rad出现

ÿþ201 0 0 9 1 6 _ S 1 _ 1 _ a u t o t a t t _ 1。 R a d

(.Rad扩展应该在那里,之后还有另一个扩展名我想删除)

我认为这是某种类型的愚蠢的Windows编码问题。不幸的是,我对这些事情一无所知。对此的任何帮助将不胜感激。

由于

2 个答案:

答案 0 :(得分:4)

默认情况下,Powershell会发出Unicode,您在开头看到的字符称为BOM(字节顺序标记)。您可以强制Java读取Unicode,或强制Powershell在参数default的{​​{1}}的帮助下输出其他编码,最好是OEMOut-File。总结一下试试这个:

-Encoding

答案 1 :(得分:0)

您可能希望使用ASCII输出。 使用此:

Get-ChildItem | ForEach-Object {$_.BaseName} | Out-File -Encoding ASCII -FilePath file_names.txt