1

我正在使用这个命令:

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

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

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

20100916_090350_S1_1_auto gain test_1.Rad 作为

ÿþ2 0 1 0 0 9 1 6 _ S 1 _ 1 _ autogaintest _ 1 。广告

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

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

谢谢

4

2 回答 2

4

Powershell 默认发出 Unicode,您在开头看到的字符称为 BOM(字节顺序标记)。您可以强制 Java 读取 Unicode,或强制 Powershell 输出其他编码,最好defaultOEM借助Out-Filewith parameter -Encoding。所以总结一下试试这个:

Get-ChildItem | ForEach-Object {$_.BaseName} | Out-File -Encoding default file_names.txt
于 2013-08-07T16:58:44.010 回答
0

您可能想使用 ASCII 输出。用这个:

Get-ChildItem | ForEach-Object {$_.BaseName} | Out-File -Encoding ASCII -FilePath file_names.txt
于 2013-08-07T17:13:14.560 回答