如何让Imgur API在处理请求时正确保留负载中的emoji字符?
解决方案
你可以选择以下任意一种方式发起请求,即可让emoji正常保留:
方式1:使用JSON格式提交(更稳定)
直接传递JSON格式的请求体,显式指定UTF-8编码,避免表单编码的兼容问题:
curl \ --request POST \ 'https://api.imgur.com/3/image/abc123' \ --header 'authorization: Bearer secret' \ --header 'Content-Type: application/json; charset=utf-8' \ --data '{"description":"Hello 💩 World"}'
方式2:使用multipart表单提交
如果需要用表单格式提交,需要给表单字段显式指定编码,同时补全字段名:
curl \ --request POST \ 'https://api.imgur.com/3/image/abc123' \ --header 'authorization: Bearer secret' \ --form 'description=Hello 💩 World;type=text/plain;charset=utf-8'
之前操作失效的原因
- 最初的
--form参数没有指定字段名description,Imgur接口无法识别你提交的内容是图片描述,即使没有编码问题也无法生效。 - 你添加了
Content-Type: application/json; charset=utf-8请求头,但实际提交的是multipart/form-data格式的负载,请求头和负载格式不匹配,服务端解析异常,编码设置不会生效。 - 默认的multipart表单如果没有显式指定字符集,服务端会默认用ASCII编码解析内容,emoji不属于ASCII字符范围,就会被替换成
?。
内容的提问来源于stack exchange,提问作者user16963196
相关产品推荐
相关产品推荐

