DVM*_*DVM 8 .net asp.net unicode asp.net-core-mvc asp.net-core
我正在尝试将这样的对象发送到我的REST API(使用asp net core构建)
{
"firstName":"tersü",
"lastName":"asda"
}
Run Code Online (Sandbox Code Playgroud)
这就是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)
Run Code Online (Sandbox Code Playgroud)
但是,我actionContext.ModelState总是无效的,因为它不适用于变音符号.例外情况如下:
无法将索引35处的字节[FC]从指定代码页转换为Unicode
如果有任何帮助,方法签名如下所示:
[ValidateUserData]
public async Task<IActionResult> Update(string userId, [FromBody] UpdateUserRequest updateRequest)
Run Code Online (Sandbox Code Playgroud)
基本上代码永远不会过去
if (!actionContext.ModelState.IsValid)
{
actionContext.Result = new BadRequestObjectResult(actionContext.ModelState);
}
Run Code Online (Sandbox Code Playgroud)
在[ValidateUserData]属性内
我在这里错过了什么?
Jcl*_*Jcl 11
您正在发送编码的字符串utf-16,但是(在Content-Type标题的字符集中)告诉它utf-8.
tersüin 的字节utf-8是:
74,65,72,73,C3,BC
Run Code Online (Sandbox Code Playgroud)
但是tersü(in utf-16)包含字节(注意FC那里):
74,0,65,0,72,0,73,0,FC,0
Run Code Online (Sandbox Code Playgroud)
(在这个小提琴中检查)
所以它无法理解它.因此,要么utf-8在发送之前将字符串转换为客户端,要么将Content-Type字符集设置为utf-16.
| 归档时间: |
|
| 查看次数: |
11544 次 |
| 最近记录: |