You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell将PBIX解压的Layout文件转UTF-8并生成JSON对象

解决PBIX解压后Layout文件转UTF-8可解析JSON的问题

问题根源

PBIX解压后的Report文件夹内的Layout文件实际是**UTF-16LE(带BOM)**编码的JSON文本,直接用PowerShell默认编码读取会导致内容损坏,进而出现JSON转换失败、生成文件带大量NUL字符的问题。

解决方案(无需外部工具)

方案1:直接读取并转换为JSON对象

指定UTF-16LE编码读取文件,直接生成可操作的JSON对象,无需中间文件:

# 替换为你的Layout文件实际路径
$layoutPath = "C:\解压路径\Report\Layout"
# PowerShell中-Encoding Unicode对应UTF-16LE编码,匹配Layout文件格式
$jsonObject = Get-Content -Raw -Encoding Unicode $layoutPath | ConvertFrom-Json

# 验证示例:输出JSON结构中的Report节点内容
$jsonObject.Report

方案2:转换为UTF-8无BOM的可读JSON文件

如果需要保存为标准UTF-8无BOM格式的JSON文件,执行以下脚本:

$layoutPath = "C:\解压路径\Report\Layout"
$outputPath = "C:\目标路径\Layout_clean.json"

# 读取原编码内容,转换为UTF-8无BOM格式保存
Get-Content -Raw -Encoding Unicode $layoutPath | Set-Content -Path $outputPath -Encoding utf8NoBOM

# 验证转换结果:读取新文件并解析为JSON对象
$validatedJson = Get-Content -Raw $outputPath | ConvertFrom-Json

之前尝试失败的原因

  1. 第一次操作未指定读取编码,PowerShell默认编码(PS5为ASCII、PS7+为UTF-8)无法正确解析UTF-16LE格式,导致ConvertFrom-Json收到无效JSON内容报错。
  2. 第二次操作同样未指定读取编码,读取到损坏的内容写入后出现大量NUL字符;且未显式指定utf8NoBOM编码,导致生成的文件带BOM标记。

内容的提问来源于stack exchange,提问作者bosskay972

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:45:42