C# 串行化UTF-8

C# 串行化UTF-8,c#,.net,json,json.net,C#,.net,Json,Json.net,我对.NET有点新。。。。我已经搜索了大约4个小时,也许不够努力,我还是会继续问: 我使用Newtonsoft JSON.NET编写了以下代码,它在JSON中对我的其他API做出了很好的响应。然而,问题是,在我的模型中,我传递的参数包含国际化字符,比如下面的'ch':这些字符很好地来自模型,或者至少,我认为,但是它们被正确地传递了。然而,当它们被序列化到输出中时,它们会像下面这样乱七八糟: 'Ç' => A|™© this.serializer.Serialize(context.Htt

我对.NET有点新。。。。我已经搜索了大约4个小时,也许不够努力,我还是会继续问:

我使用Newtonsoft JSON.NET编写了以下代码,它在JSON中对我的其他API做出了很好的响应。然而,问题是,在我的模型中,我传递的参数包含国际化字符,比如下面的'ch':这些字符很好地来自模型,或者至少,我认为,但是它们被正确地传递了。然而,当它们被序列化到输出中时,它们会像下面这样乱七八糟:

'Ç' =>
A|™©

this.serializer.Serialize(context.HttpContext.Response.Output, this.Model);

我做错了什么?

在进一步探讨这个问题后,我发现以下是一个有助于解决问题的答案

更新日期:2015年1月2日

public override void ExecuteResult(ControllerContext context)
{
if (context == null) throw new ArgumentNullException("context");
context.HttpContext.Response.ContentType = "application/json";
context.HttpContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
this.serializer.Serialize(context.HttpContext.Response.Output, this.Model);
}

我必须将API两侧的编码设置为UTF8

输出编码声明是什么?如果它显示多个字符而不是一个国际字符,则您必须声明输出不是纯ASCII。@YurySchkatula public override void executesSultControllerContext context{if context==null抛出新参数nullexceptionContext;context.HttpContext.Response.ContentType=application/json;context.HttpContext.Response.Charset=UTF-8;this.serializer.Serializecontext.HttpContext.Response.Output,this.Model;}很抱歉,我不知道如何格式化,但这是我目前掌握的内容。您的浏览器端编码是什么?我使用的是Unicode,我确定序列化程序正确地生成了字符串/对象,但由于某种原因,响应流没有将其正确发送到另一个API…或者可能是另一个API未被接收在正确的概念下理解它?似乎OverAPI忽略了这个概念,因为非ASCII字符在UTF-8中由几个字节编码。