当我将我的$ string变量内容放入某个文本文件时,它似乎会添加一些垃圾字符。例如,我在字符串中写入实用程序名称,并将该字符串复制到文件中,如下所示。powershell字符串操作是否添加垃圾字符?
$CodeCount+="ccount.exe"
$CodeCount | Out-file "C:\CodeCount.bat"
当我执行这个批处理文件时,它通过显示前面的一些垃圾字符失败。
即使我试着trim(),但仍然是相同的结果。
如何避免在前面添加垃圾邮件?
当我将我的$ string变量内容放入某个文本文件时,它似乎会添加一些垃圾字符。例如,我在字符串中写入实用程序名称,并将该字符串复制到文件中,如下所示。powershell字符串操作是否添加垃圾字符?
$CodeCount+="ccount.exe"
$CodeCount | Out-file "C:\CodeCount.bat"
当我执行这个批处理文件时,它通过显示前面的一些垃圾字符失败。
即使我试着trim(),但仍然是相同的结果。
如何避免在前面添加垃圾邮件?
不要使用out-file
,至少,在默认的形式。使用set-content
。或者明确地设置out-file
的编码,如out-file -encoding ascii
。默认情况下,out-file使用utf16(ucs-2实际)编码,在许多应用程序(包括版本控制系统,如Hg,Git)中不会将其视为纯文本,并添加您提到的“有趣”字符。
请注意,重定向>
与out-file相同,并会给您相同的结果。
这是因为用于Out-file
的标准编码是Unicode
,它在文件的开头添加了一些BOM值(用十六进制编辑器打开文件时可以看到这些值)。为了避免这些字节使用-encoding ASCII
:
$CodeCount | Out-file -encoding ascii "C:\CodeCount.bat"
Out-File
的默认编码是Little Endian Unicode。 cmd.exe
并不认同这一编码以及工作,所以只需要使用ASCII
:
Out-File -Encoding ASCII
尝试'出文件-Encoding ASCII' – 2012-02-16 07:32:29