当Response用外语写两个字段时,C#中Json Response的问题

本文关键字:Response Json 问题 字段 外语 两个 | 更新日期: 2023-09-27 18:28:26

我在c#中创建web服务,该服务使用HTTP RESPONE.write编写json回答,但问题是,当我返回带有一些字段的json时,其中包括hebrew langauge,之后json响应未满,尾括号未中。我将代码放在c#中,json字符串的响应

带有hebrew字段的json响应

{"Response":"OK","FName":"איגור","LName":"kurylo","User_Name":"0524858214","ErrorMsg":"P

带英文字段的json响应规则:

{"Response":"OK","FName":"igor","LName":"kurylo","User_Name":"0524858218","ErrorMsg":"Pass"}

以及我在web服务中的代码这是json响应的模型

public class Android_Reg
{
    public string Response { get; set; }
    public string FName { get; set; }
    public string LName { get; set; }
    public string User_Name { get; set; }
    public string ErrorMsg { get; set; }   
}
string l = Convert.ToString(jSon.Serialize(reg).ToString().Length);
string jsonr = jSon.Serialize(reg).ToString();
var json = JsonConvert.SerializeObject(reg, Formatting.Indented);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Charset = "utf-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.ContentType = "application/json";
HttpContext.Current.Response.AddHeader("content-length", l);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Output.Write(jsonr);

谢谢你的帮助:)

编辑:好的,我做了一些测试,我揭穿了我的web服务,我找到了下一个细节之后

 string jsonr = jSon.Serialize(reg).ToString();

这个命令jsonr获取下一个字符串,其中还包含希伯来语和英语字段jsonr

"{'"Response'":'"OK'",'"FName'":'"igor'",'"LName'":'"kurylo'",'"User_Name'":'"0524858281'",'"ErrorMsg'":'"Pass'"}"

"{'"Response'":'"OK'",'"FName'":'"איגור'",'"LName'":'"קורילו'",'"User_Name'":'"0524858270'",'"ErrorMsg'":'"Pass'"}"

可能是因为字符串被截断了,我检查了两个字符串的长度,第一个字符串是92个字符,第二个字符串是92

当Response用外语写两个字段时,C#中Json Response的问题

我还没能测试这个,但我认为问题在于HttpContext.Current.Response.AddHeader("content-length", l); 行中的字符串长度

希伯来语字符串的长度为5,缺少的字符数为5。要对希伯来语进行编码,将使用双字节编码,因此缺少5个字符。如果你把希伯来语字符的数量加在l上,我相信问题就会消失。只需使用l + 5即可进行测试。