【问题标题】:Prevent extra characters in text file when using Powershell cmdlet export-csv使用 Powershell cmdlet export-csv 时防止文本文件中出现多余字符
【发布时间】:2013-02-04 21:13:30
【问题描述】:

我正在使用 Powershell cmdlet export-csv 将 sqlserver 查询的结果导出到 .txt 文件。当我使用文本编辑器(记事本)查看结果行时,结果行符合我的预期,如下所示:

 Account|Representative|Note

但是,当我使用二进制文件格式(在 TextPad 中)打开文件时,我看到结果行中散布着额外的字符(不确定它们是句点还是空格),如下所示:

 A.c.c.o.u.n.t.|.R.e.p.r.e.s.e.n.t.a.t.i.v.e.|.N.o.t.e.

我尝试为 export-csv 的编码参数指定不同的值,包括 UTF32、UTF8、ASCII 和 Unicode,但无法去掉多余的字符。

我有其他生成文件的方法(SSIS 包),但特别希望让这个 Powershell 选项为支持导出的团队的利益而工作。

提前感谢您提供的任何帮助。

【问题讨论】:

  • 你能显示你正在使用的命令行吗?

标签: powershell export


【解决方案1】:

在记事本中打开文件并单击文件 → 另存为...Encoding 字段的预选值将告诉您使用了哪种编码(可能是Unicode)。不过,Export-Csv -Encoding ASCII 应该注意这一点。您也可以尝试像这样重新编码文件:

Get-Content generated.txt | Out-File -Encoding ASCII converted.txt

如果这没有帮助,请使用十六进制编辑器打开文件并用前几个字节更新您的问题(第一行就足够了)。

【讨论】:

  • 非常感谢。您的回答为我指明了正确的方向。我发现文本文件实际上被编码为 Unicode,这让我感到惊讶,因为我已经指定了 ASCII。我忘记了,后来在我的脚本中有一个 Get-Content 命令,我已经放置了一个删除所有引号(使用替换)的地方,并且那个的 Out-File 没有指定 ASCII。我暂时将其注释掉,并且文件格式正确。然后我取消注释并添加了“-Encoding ASCII”。再次感谢!
  • 感谢这帮助了我。我在命令中使用 > output.text,但得到了一些奇怪的编码。像您建议的那样通过管道连接到 Get-Content 为我解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 2023-01-12
  • 2011-09-09
  • 2021-08-07
  • 2021-04-14
相关资源
最近更新 更多