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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 04:22:33