与Powershell连接时编码问题

时间:2014-12-01 09:19:08

标签: windows powershell encoding concatenation utf-16

在一堆文件中,我想将文件名以1开头的所有文件连接到名为1.txt的文本文件中。源文件的编码是UTF16-LE,它也应该是目标文件的编码。但是使用我的powershell脚本(下面的代码)会生成带有缺陷特殊符号的UTF-8文件(变形金刚等)

这是我的代码:

Powershell.exe cat  Disc:\data\files\1\filename-1* > Path:\here\1.txt

我发现了几种使用Get-Content和Out-File的方法,但是无法使这些命令适应我的通配符需求。据我所知,cat是get-content的标准别名,所以我想知道为什么我不能用get-content替换cat。此外,get-content有一个 -Encoding CharSet 参数,但更改我的代码如下:

Powershell.exe cat  Disc:\data\files\1\filename-1* > Path:\here\1.txt -encode Unicode

(这是UTF-16格式的小端字节顺序的字符集)不会改变一个东西。 BigEndianUnicode或UTF8都没有。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

使用重定向运算符(>)时,无法指定编码。请改用Out-File cmdlet:

Get-Content C:\path\to\input* | Out-File D:\path\to\output.txt -Encoding Unicode