Wix商店API集成:提交产品时变音符号丢失问题求助
解决Wix API提交产品时变音符号丢失的问题
问题核心
你遇到的问题本质是PowerShell的Invoke-WebRequest默认编码与请求头声明的UTF-8不匹配:虽然你尝试在请求头里指定了UTF-8,但单独的charset字段不符合HTTP标准写法,且Invoke-WebRequest默认会用系统编码(如Windows-1252)处理字符串格式的请求体,导致带变音符号的字符在传输时被错误编码,服务器端无法正确解析。
修复方案
1. 修正Content-Type头格式
将Content-Type设置为application/json; charset=utf-8,把charset参数合并到Content-Type头中(这是HTTP标准的写法,单独的charset头可能不被Wix服务器识别)。
2. 强制用UTF-8编码请求体
ConvertTo-Json输出的是字符串,Invoke-WebRequest处理字符串时会默认使用系统编码,而非UTF-8。需要手动将JSON字符串转换为UTF-8字节数组后再发送,确保传输的编码与声明一致。
修改后的代码示例
$headers = @{ "Content-Type" = "application/json; charset=utf-8" "Authorization" = "$auth" } # 构建产品对象逻辑保持不变 $obj = @{ "product" = @{ "name" = [string]($product.name) } # 其他产品字段... } # 转换为JSON字符串 $bodyJson = $obj | ConvertTo-Json -Depth 3 # 转换为无BOM的UTF-8字节数组 $bodyBytes = [System.Text.Encoding]::UTF8.GetBytes($bodyJson) # 发送请求 Invoke-WebRequest -Headers $headers -Uri $url -Method POST -Body $bodyBytes
额外验证步骤
- 确认本地
$product.name的字符编码正确:可以用$product.name | Format-Hex查看字节值,验证变音符号对应的UTF-8字节是否合规(比如德语ä对应字节C3 A4)。 - 如果上述方案仍无效,再排查Wix API文档确认是否对产品名称有特殊字符限制,但大概率是请求编码问题导致的。
内容的提问来源于stack exchange,提问作者f22l2
相关产品推荐
相关产品推荐

