asp.net - 无法将索引 35 处的字节 [FC] 从指定的代码页转换为 Unicode

标签 asp.net .net unicode asp.net-core asp.net-core-mvc

我正在尝试将这样的对象发送到我的 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/

相关文章:

.net - .NET 的 AWGN 生成器

c++ - 自定义字符串类实现建议?

javascript - ajaxcontroltoolkit 的 Ajax CDN 支持

c# - 如何在 ASP.net c# 中的页面之间传递对象而不是值?

c# - 使用Asp.net web C#在IIS上动态创建网站

c# - VS2013发布Web部署任务失败文件正在使用中

.net - 在 backgroundworker 中使用 Thread.Sleep 方法有什么好处?

.net - 将扩展方法应用于具有泛型类型的泛型类

internet-explorer - Unicode 字符和 Internet Explorer

python - 带有unicode转义序列的文本到python中的unicode