我需要使用PowerShell修改现有的UTF8编码的JSON文件。我尝试使用以下代码:
$fileContent = ConvertFrom-Json "$(Get-Content $filePath -Encoding UTF8)"
$fileContent.someProperty = "someValue"
$fileContent | ConvertTo-Json -Depth 999 | Out-File $filePath
这会将BOM添加到文件中,并以UTF16格式对其进行编码。是否可以让ConvertFrom-Json
和ConvertTo-Json
不进行编码/ BOM?
答案 0 :(得分:8)
这与ConvertTo-Json
或ConvertFrom-Json
无关。编码由输出cmdlet定义。 Out-File
默认为Unicode,Set-Content
为ASCII。对于它们中的每一个,可以明确定义所需的编码:
... | Out-File $filePath -Encoding UTF8
或
... | Set-Content $filePath -Encoding UTF8
那仍然会将(UTF8)BOM写入输出文件,但我不会认为没有BOM的UTF-8编码也是一种不错的做法。
如果您想要ASCII编码的输出文件(无BOM),请将UTF8
替换为Ascii
:
... | Out-File $filePath -Encoding Ascii
或
... | Set-Content $filePath # Ascii is default encoding for Set-Content