我不是powershell的人,如果我的问题让人困惑,请原谅。
我们正在使用ConverTo创建一个JSON文件,它成功地创建了JSON文件。然而,当我禁止JSON的内容时,它有'??‘。在json文件的开头,但是当我在文件系统中下载文件/查看文件时,没有看到同样的情况。
下面是用于创建JSON文件的powershell代码:
$packageJson = @{
packageName = "ABC.DEF.GHI"
version = "1.1.1"
branchName = "somebranch"
oneOps = @{
platform = "XYZ"
component = "JNL"
}
}
$packageJson | ConvertTo-Json -depth 100 | Out-File "$packageName.json"上面的一组代码成功地创建了文件,当我查看文件时,一切看起来都很好,但是当我禁止文件时,它的前导是‘?’。如下所示:
??{
"packageName": "ABC.DEF.GHI",
"version": "0.1.0-looper-poc0529",
"oneOps": {
"platform": "XYZ",
"component": "JNL"
},
"branchName": "somebranch"
}由于这个原因,我无法解析JSON文件,它给出了以下错误:
com.jayway.jsonpath.InvalidJsonException: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('?' (code 65533 / 0xfffd)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')发布于 2018-10-15 17:36:56
这些不是?字符。这是组成Unicode字节顺序标记的两个不同的不可打印字符。您可以看到?,因为调试器、文本编辑器、操作系统或字体就是这样呈现不可打印字符的。
要解决这个问题,要么更改输出编码,要么在另一端使用理解UTF-8的字符集。前者是简单的解决办法,但从长远来看,后者可能更好。最终,您将得到需要扩展字符的数据。
发布于 2020-05-21 19:53:40
一个不特定于Out-File的更通用的解决方案是在调用ConvertTo-Json之前设置这些
$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::UTF8;https://stackoverflow.com/questions/52821806
复制相似问题