AWS Step Functions保留JSON特殊字符(如é)的方法咨询
解决AWS Step Functions保留特殊字符(如é)的问题
这问题我之前帮同事排查过,核心是整个请求链路的字符编码没统一用UTF-8,导致特殊字符在传递过程中被损坏了。咱们一步步来修复:
1. 检查API Gateway的映射模板
API Gateway是中间传递的关键节点,很多时候问题出在这儿:
- 确保你的集成请求里,
application/json的映射模板没有做多余的字符转义。比如别用$util.escapeJavaScript()这类函数,它会把UTF-8特殊字符转成Unicode转义序列,甚至可能导致乱码。 - 正确的做法是直接传递原始请求体,模板写法应该是这样:
{ "input": "$input.json('$')", "stateMachineArn": "arn:aws:states:你的区域:你的账号ID:stateMachine:你的状态机名称" }
这个模板会原封不动把API Gateway收到的JSON请求体传给Step Functions,不会破坏UTF-8编码的字符。
2. 确认客户端请求的编码头
要让API Gateway正确解析特殊字符,客户端发送请求时必须在Content-Type头里指定UTF-8,也就是:Content-Type: application/json; charset=utf-8
如果客户端没加这个charset,API Gateway可能会默认用ISO-8859-1编码解析,这样像é这类字符就会被转成�。
3. 验证Step Functions本身的兼容性
Step Functions原生支持UTF-8编码的JSON,你可以直接在控制台手动输入带é的JSON作为测试输入,看是否能正常显示。如果这里没问题,就说明问题肯定出在API Gateway的传递环节。
4. 检查集成响应的模板(如果有配置)
如果你给API Gateway加了集成响应模板,也要确保它没有对返回内容做不必要的编码处理,同样保持UTF-8的一致性。
总结一下:只要从客户端请求、API Gateway映射模板到Step Functions的整个链路都严格使用UTF-8编码,不做多余的转义操作,像é这类特殊字符就能完整保留下来啦。
内容的提问来源于stack exchange,提问作者helloworld
相关产品推荐
相关产品推荐

