Pas*_*ger 2 unicode powershell byte-order-mark
我需要使用PowerShell修改现有的UTF8编码的JSON文件.我尝试使用以下代码:
$fileContent = ConvertFrom-Json "$(Get-Content $filePath -Encoding UTF8)"
$fileContent.someProperty = "someValue"
$fileContent | ConvertTo-Json -Depth 999 | Out-File $filePath
Run Code Online (Sandbox Code Playgroud)
这会将BOM添加到文件中,并以UTF16格式对其进行编码.是否可以拥有ConvertFrom-Json和ConvertTo-Json不执行编码/ BOM?
这与ConvertTo-Jsonor 无关ConvertFrom-Json.编码由输出cmdlet定义.Out-File默认为Unicode,Set-Content为ASCII.对于它们中的每一个,可以明确定义所需的编码:
... | Out-File $filePath -Encoding UTF8
Run Code Online (Sandbox Code Playgroud)
要么
... | Set-Content $filePath -Encoding UTF8
Run Code Online (Sandbox Code Playgroud)
那仍然会将(UTF8)BOM写入输出文件,但我不认为没有BOM的UTF-8编码是一种好的做法.
如果您想要ASCII编码的输出文件(无BOM)替换UTF8为Ascii:
... | Out-File $filePath -Encoding Ascii
Run Code Online (Sandbox Code Playgroud)
要么
... | Set-Content $filePath # Ascii is default encoding for Set-Content
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3358 次 |
| 最近记录: |