【发布时间】:2022-08-11 00:55:47
【问题描述】:
我在使用 PowerShell ConvertTo-Json 命令时遇到问题。生成的文件有两个不可打印字符作为文件的第一个 to 字符。使用 Format-Hex,返回值为:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 FF FE 5B 00 0D 00 0A 00 20 00 20 00 20 00 20 00 .þ[..... . . . .
00000010 7B 00 0D 00 0A 00 20 00 20 00 20 00 20 00 20 00 {..... . . . . .
...
坏字符是 00 和 01 位置的 FF 和 FE。我用来生成文件的命令如下:
$search.resources.attributes |select $Object.Attributes.ID |Sort-Object -Property displayname | ConvertTo-Json | Out-File ([Environment]::GetFolderPath(\"Desktop\")+\"\\RL_Identities.json\")
$search 是 Invoke-RestMethod 调用的结果。
我正在将此文件导入 Oracle CLOB 列。此列有一个 CHECK (COLUMN_NAME IS JSON) 检查约束,并且文件中包含两个不可打印的字符而失败。如果我在 Notepad++ 中打开文件,选择全部并复制/粘贴到一个新文件,新文件会完美加载,因为它开头没有两个字符。
这两个角色有什么原因吗?它是 ConvertTo-Json 命令的“功能”还是来自 Invoke-RestMethod 调用中的数据?如果没有办法阻止这些字符存在,有没有办法以编程方式删除文件的前两个字节?
-
输出文件默认为 utf 16 编码。 OF FE 是编码 sig 或 BOM。