【问题标题】:Powershell - Encoding UTF-8 does not work at Export-CsvPowershell - 编码 UTF-8 在 Export-Csv 中不起作用
【发布时间】:2019-04-25 16:17:39
【问题描述】:

我正在尝试输出一堆数据并有一些德国元音变音:ä、ö、ü、.. 我在 Export-Csv 的末尾添加了 -Encoding UTF8,但它并没有真正起作用。 我的代码:

For ($i = 0; $i -lt $accFileCont.Length; $i++) {
        $accFileCont[$i] | Export-Csv $outAccFile -NoTypeInformation -Encoding UTF8
    }

我期待的是 ä, ö, ü... 而不是“ä”,... 这里有什么问题?它不输出元音变音。 在此先感谢:)

【问题讨论】:

  • $accFileCont 来自哪里?如果您正在从文件中读取字符串并且未能指定正确的编码,那么之后您将无法修复它
  • 当您阅读输出时,您应该使用 UTF-8。如果有可能你不是,请显示字节。在输入文件中显示字节也会很有帮助。
  • 如果文件开头没有 BOM,PS 5 将无法正确显示。此外,看起来您正在覆盖 csv 而不是附加到它。或者您可以将 export-csv 移到循环之外。如果附加到它,文件首先需要是带有 BOM 的 UTF8。
  • 感谢您的回答!我正在附加:$accFileCont[$i] | Export-Csv $outAccFile -NoTypeInformation -Encoding UTF8
  • 问题解决了!!! Mathias,我发现你对去年的一个问题发表了评论 :) 我应该使用Import-Csv,它默认为 UTF-8! :D Export-Csv 默认为 ASCII.. 谢谢大家 ;)

标签: powershell encoding utf-8 export-csv


【解决方案1】:

对我来说,实际上是“-Encoding utf8BOM”完成了这项工作

环境: Windows 10 20H2 德语, 德语 Excel 版本, PowerShell 7

如果我不使用 utf8BOM,我的德语 Excel 未正确显示“变音符号”。

There is a whole discussion about UTF8 with or without BOM

其实是“马吕斯”wrote the following comment: "可能不推荐,但它在尝试输出 "æøå" 时对我的 powershell 脚本产生了影响"

“C:\sources\new_18.json”采用 UTF-8 格式(它是一个简单的 JSON 文件)

"-Delimiter ";"" 用于德语 Excel

    $TestVariable = (Get-Content -raw -Encoding UTF8 "C:\sources\new_18.json") | ConvertFrom-Json

    $TestVariable.value | Export-Csv "C:\sources\PSOutput\Output_$((Get-Date).ToString('MM-dd-yyyy_hh-mm-ss')).csv" -NoTypeInformation -Delimiter ";" -Encoding utf8BOM

对于 PowerShell 5: 将“-Encoding utf8BOM”更改为“-Encoding utf8” (在 Powershell 5 中“Export-Csv -Encoding utf8”将文档保存在 utf8BOM 中)

【讨论】:

    猜你喜欢
    • 2013-07-19
    • 2019-11-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    相关资源
    最近更新 更多