当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
我还没能测试这个,但我认为问题在于HttpContext.Current.Response.AddHeader("content-length", l);
行中的字符串长度
希伯来语字符串的长度为5,缺少的字符数为5。要对希伯来语进行编码,将使用双字节编码,因此缺少5个字符。如果你把希伯来语字符的数量加在l
上,我相信问题就会消失。只需使用l + 5
即可进行测试。