PowerShell Export-Csv导出CSV文件出现异常编码文本问题求助
问题原因与解决办法
你碰到的这种+ACI-Account+AF8-No+ACI-格式,本质是UTF-7编码下的特殊字符转义结果,问题就出在你命令里的-Encoding UTF7参数上。
具体原因
PowerShell 5.1中的Export-Csv在使用UTF-7编码时,会对属性名里的部分字符(哪怕是下划线这类常规ASCII字符)采用Modified Base64的方式转义,就会出现这种看起来像乱码的格式。UTF-7本身是为邮件传输设计的编码,并不适合CSV这种需要直观可读的文本格式,所以才会出现不符合预期的转换。你之前导出正常,应该是用了默认编码(比如系统ANSI或UTF-8),这些编码不会对常规属性名字符做特殊转义。
解决步骤
推荐直接换用兼容性更好的编码,这是最省心的方案:
- 用带BOM的UTF-8(最通用,大部分工具都能识别):
$rowsWithErrs | Export-Csv -Path $rowErrCsvPath -NoTypeInformation -Encoding UTF8 - 如果需要不带BOM的UTF-8(适合跨平台场景):
$rowsWithErrs | Export-Csv -Path $rowErrCsvPath -NoTypeInformation -Encoding UTF8NoBOM
如果因为特殊需求必须使用UTF-7编码,那你需要先确保对象的属性名都是纯ASCII字符且没有需要转义的内容,但这种方式局限性很大,不推荐。
内容的提问来源于stack exchange,提问作者Sako73
相关产品推荐
相关产品推荐

