我正在尝试将这样的对象发送到我的REST API(使用asp net core构建)
{ "firstName":"tersü","lastName":"asda" }
这就是SoapUI的标题形式:
Accept-Encoding: gzip,deflate Content-Type: application/json:charset=UTF-16 Host: localhost:4004 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
但是,我的actionContext.ModelState始终无效,因为它无法与umlaute一起使用.例外情况如下:
Unable to translate bytes [FC] at index 35 from specified code page to
Unicode
如果有任何帮助,方法签名如下所示:
[ValidateUserData] public async Task<IActionResult> Update(string userId,[FromBody] UpdateUserRequest updateRequest)
基本上代码永远不会过去
if (!actionContext.ModelState.IsValid) { actionContext.Result = new BadRequestObjectResult(actionContext.ModelState); }
在[ValidateUserData]属性中
我在这里错过了什么?
解决方法
您正在发送以utf-16编码的字符串,但告诉(在Content-Type标头的字符集中)它是utf-8.
utf-8中tersü的字节是:
74,65,72,73,C3,BC
但是tersü(在utf-16中)包含字节(注意那里的FC):
74,FC,0
(检查in this fiddle)
所以它无法理解它.因此,要么在发送之前将字符串转换为客户端中的utf-8,要么将Content-Type字符集设置为utf-16.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。