Business Central 365 SaaS API德文字符编码问题求助
解决Business Central 365 API批量传输时德语变音符号编码异常问题
问题背景
在Business Central 365 (SaaS, Version 22.3)环境中实现了API类型页面及数据表,用于接收外部财务系统的记账信息并做后续处理。因业务处于德语区,记账文本支持人工自由填写,包含德语变音符号(如“ü”)。使用PowerShell脚本通过API批量传输数据时,变音符号出现编码异常,例如“ü”被转为“\u00fc”,导致目标表中字段显示异常。
复现脚本
$Headers = @{ "Content-type" = "application/json; charset=utf-8" "Content-Transfer-Encoding" = "binary" "Authorization" = "Bearer " + $BearerToken "Company" = "xxxxxxxx-xxxx-xxx-xxxx-xxxxxxxxxxxx" } $body = @{ "requests" = @( @{ "method" = "POST" "id" = "REQ1" "url" = "companies(xxxxxxxx-xxxx-xxx-xxxx-xxxxxxxxxxxx)/transactions" "headers" = @{ "Content-Type" = "application/json; charset=utf-8" "Content-Transfer-Encoding" = "binary" } "body" = @{ "ABRECHNUNGNR" = "6661" "BUCHUNGSTEXT" = "Büromöbel" } } ) } $bodyText = ($body | ConvertTo-Json -Depth 100) $url = 'https://api.businesscentral.dynamics.com/v2.0/Environment/api/publisher/transaction/v1.0/$batch' $response = Invoke-RestMethod -Method Post -Uri $url -Headers $Headers -Body $bodyText
根因分析
最初排查了请求头的编码配置(如charset=utf-8、Content-Transfer-Encoding),但均无问题。最终定位到字段名大小写不匹配:API页面中定义的属性名为小写的buchungstext,而请求体中使用了大写的BUCHUNGSTEXT,这导致系统无法正确解析字段值的编码,进而出现变音符号异常。
解决方案
将请求体中的字段名从大写BUCHUNGSTEXT修正为小写buchungstext,调整后的请求体部分如下:
"body" = @{ "ABRECHNUNGNR" = "6661" "buchungstext" = "Büromöbel" }
重新执行脚本传输数据后,目标表中的德语变音符号正常显示,编码异常问题消失。
内容的提问来源于stack exchange,提问作者Daniel Erling
相关产品推荐
相关产品推荐

