我运行这段代码
cmd := exec.Command(sArg[0], sArg[1:]...)
d, err := cmd.Output()
if len(arg) == 0 {
return err
}
file.WriteString(string(d))
运行该字符串后,该字符串在调试控制台中打印良好,但是该字符在文件中损坏了。
原始输出
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
DisableNotifications REG_DWORD 0x0
EnableFirewall REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\Logging
文件中的输出损坏
如何将字符正确写入文件?
答案 0 :(得分:0)
如果我使用0d, 0a, 48, 4b, 45, 59, 4b, 4c, 4f, 43, 41, 4c, 5f, 4d, 61 43, 48
并假设它是使用UTF-16-LE编码的,它将显示为䭈奅䱋䍏䱁䵟䍡,看起来与屏幕快照的第一部分相同。因此,在我看来,您的程序正确保存了数据,但您用来查看文件的应用程序错误地将其解释为UTF-16-LE编码。
这可能是由于您先前写入文件的任何原因引起的(您提到此数据将附加到先前写入的数据中)。如果前两个字节是FF,FE,则可以将其视为文件已UTF-16-LE编码的信号,但并非所有编辑器都可以识别。)
如果您在十六进制编辑器中打开文件,我希望您会看到预期的数据(即0d, 0a, 48,
...)。