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

POST接口JObject参数出现特殊字符与属性名异常问题咨询

JSON属性名异常转换与乱码问题解决

问题现象

  • Postman发送的JSON属性名为Non­Critical_XYZ
  • 控制器接收的JObject payload中属性名变为Non-Critical_XYZ(自动添加了普通连字符)
  • 将payload导出到Excel时,属性名显示为NonÂCritical_XYZ(插入了特殊字符Â)

核心原因

你输入的Non­Critical_XYZ中的“连字符”并非普通ASCII连字符(-,ASCII码45),而是U+00AD软连字符(Soft Hyphen):

  • 部分JSON解析环节(如Postman发送逻辑或服务器解析规则)会自动将软连字符替换为普通ASCII连字符,导致控制器中属性名变为Non-Critical_XYZ
  • 软连字符的UTF-8编码为0xC2 0xAD,导出Excel时若用单字节编码(如ISO-8859-1)解析UTF-8内容,会把0xC2解析为字符Â,最终出现乱码。

另外,若请求头未明确指定charset=utf-8,服务器可能用默认编码解析请求体,加剧字符转换异常。

解决方案

1. 修正原始输入字符

直接将Postman中的Non­Critical_XYZ替换为普通ASCII连字符的Non-Critical_XYZ,或移除特殊连字符,从源头避免编码问题。

2. 明确请求编码

在Postman中发送请求时,将Content-Type设置为application/json; charset=utf-8,确保服务器用UTF-8编码解析请求体。

3. 控制器端处理特殊字符

若无法修改输入,在控制器接收JObject后手动清理属性名:

// 遍历并替换属性名中的软连字符
var cleanedPayload = new JObject();
foreach (var prop in payload.Properties())
{
    // 将软连字符替换为普通连字符,或直接移除
    string cleanedName = prop.Name.Replace("\u00AD", "-");
    cleanedPayload[cleanedName] = prop.Value;
}
// 使用cleanedPayload进行后续业务处理

4. 规范Excel导出编码

导出Excel时确保使用UTF-8编码(带BOM)处理文本,以避免乱码。以EPPlus库为例:

using (var excelPackage = new ExcelPackage())
{
    var worksheet = excelPackage.Workbook.Worksheets.Add("数据页");
    // 写入清理后的属性名
    worksheet.Cells[1, 1].Value = cleanedPropertyName;
    excelPackage.SaveAs(new FileInfo("导出数据.xlsx"));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:35:23