我正在尝试将这样的对象发送到我的 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
总是无效的,因为它不能与元音变音一起工作。异常(exception)情况如下: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
header 的字符集中)它是 utf-8
.tersü
的字节数在 utf-8
是:
74,65,72,73,C3,BC
然而
tersü
(在 utf-16
中)包含字节(注意这里的 FC
):74,0,65,0,72,0,73,0,FC,0
(查看 in this fiddle)
所以它只是无法理解它。因此,要么将您的字符串转换为
utf-8
在您的客户端发送之前,或设置 Content-Type
字符集为 utf-16
.
关于asp.net - 无法将索引 35 处的字节 [FC] 从指定的代码页转换为 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076157/