有新旧两个 API ,返回同样的数据,从数据库读取的。 旧 API 用 postman 测试,无论用 pretty/raw 模式查看 response ,都是显示 emoji 的图标。 新 API 在 pretty 模式查看,显示的是 emoji ,用 raw 模式查看,显示的是 unicode 字符串 "\uD83D\uDC14"
新旧 API 用 VS DEBUGGER 看也是 emoji
为啥会造成这种区别?
检查了 response header 都是 application/json;charset=utf-8
1
javalaw2010 316 天前
就 OP 描述的内容来看,我认为这种现象取决于服务在 json 序列化的时候是否启用了 utf8 编码,比如 php 的 json_encode 函数就接受一个`JSON_UNESCAPED_UNICODE`选项,不编码 utf8 字符。至于你在调试软件里面看到的是什么,取决于这个调试软件会不会对 json 自动转义。
|
2
lovelylain 316 天前 via Android
json 的 string 是支持\uxxxx 这样的 unicode 转义的,有的 json 库在序列化的时候会输出原值,有的会输出转义,例如 python 自带的 json 库,dumps 函数默认 ensure_acsii=True ,所有非 ascii 字符都会被转义。
|
3
ne6rd OP 好像确实是 json 序列化的问题。
语言是 c# .netcore6 如果返回 plain text 就都是 emoji 如果返回 json 就有 unicode 还在找怎么改。 |
4
ne6rd OP 找到原因了
旧 API 用的 newtonsoft.json 新 API 用的 system.text.json, 两者对待 unicode escape 的策略不一样 |