为什么我的日志文件是用USC-2 Little Endian编码创建的?

时间:2015-11-02 11:19:39

标签: powershell

我有一个运行可执行文件的Powershell命令,并将所有输出重定向到日志文件。它工作正常,日志包含正确的文本,但该文件采用USC-2 Little Endian格式,其他程序无法读取。当我使用批处理执行相同的操作时,它会以UTF-8创建日志。我可以切换到批处理作为选项,但我的路径是UNC,批处理打印了一堆警告。这就是为什么我尝试使用Powershell来完成这项任务的原因。

这是脚本:

& .\rh.exe /connstring="Server=MYSERVER;Database=DB1;UID=U1;PWD=***" `
    /files=Folder1 `
    /versionfile=Version.xml `
    /vx=version `
    /repo=Repo1 `
    > test.txt *>&1

当我用Notepad ++打开test.txt并单击编码菜单时,它会显示USC-2 Little Endian作为选定的编码。

更新

我尝试了这种替代方案,现在我获得了UTF-8编码。

& .\rh.exe /connstring="Server=MYSERVER;Database=DB1;UID=U1;PWD=***" `
    /files=Folder1 `
    /versionfile=Version.xml `
    /vx=version `
    /repo=Repo1 `
    | Out-File test.txt -Encoding utf8

这提出了另一个问题。我使用*>& 1来确保所有输出都被重定向,而不仅仅是STDOUT。我应该像这样将其添加到Out-File的末尾,还是Out-File捕获所有形式的输出?:

... | Out-File test.txt -Encoding utf8 *>&1

0 个答案:

没有答案