当 RESPONSE 用外语写两个字段时,C# 中的 Json 响应出现问题

Issue with Json Response in C# when RESPONSE write two fields in foreign language

我在 c# 中使用 HTTP 编写 Web 服务 RESPONE.WRITE json 回答,但问题是当我 return json 的某些字段包含希伯来语时,之后 json 响应未满,结束括号未命中..我把代码放在 C# 和 json 字符串

的响应中

json 带有希伯来语字段的响应

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

json 英文字段响应规则:

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

并在网络服务中获取我的代码 这是 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);

谢谢你的帮助:)

编辑: 好的,我做了一些测试,我调试了我的网络服务,然后我找到了下一个细节 在

之后
 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

我没能对此进行测试,但我认为问题在于 HttpContext.Current.Response.AddHeader("content-length", l);

行中字符串的长度

您的希伯来语字符串的长度为 5,缺少的字符数为 5。要对希伯来语进行编码,它将使用 double-byte 编码,因此缺少 5 个字符。如果您添加 l 希伯来字符的数量,我相信问题就会消失。要测试它,只需使用 l + 5.