asp.net webservice在浏览器中调用时 返回的json出现中文乱码

最近在用vs写一个webservice,把数据库查到的多条数据通过json返回,但是在测试过程中,通过浏览器调用时出现了中文乱码,实际就是编码方式的问题

刚开始采用:
context.Response.ContentType = "application/json;charset=UTF-8";
问题:用了这个,在google浏览器显示是正常了,但是在IE浏览器里会提示下载,保存文件


最终采用:
Context.Response.ContentType = "text/html;charset=UTF-8";
完美的解决了这个问题

详细代码如下:
定义实体类(返回的json对象取决于这个定义)

public class Relation
    {
        public string level { get; set; }
        public string parent_sn { get; set; }
        public string child_sn { get; set; }
    }
    public class IRelation
    {
        public bool success { get; set; }
        public string msg { get; set; }
        public List<Relation> lotInfo { get; set; }
    }

添加引用

using Newtonsoft.Json;
using System.Web.Script.Services;

webservice方法主要代码如下:

[WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public void ViewRelation(string factory, string lot_id)
        {
            TRSNode in_node = new TRSNode("SQL_IN");
            TRSNode out_node = new TRSNode("SQL_OUT");


            Context.Response.Clear();
            Context.Response.ContentType = "text/html;charset=UTF-8"; 
            try
            {
                IRelation datalist = new IRelation();
                /*连接数据库查询数据,代码省略*/if (查询数据库失败)
                    {
                        datalist.success = false;
                        datalist.msg = "Fail to connect MES database!";
                        string json = JsonConvert.SerializeObject(datalist);
                        Context.Response.Write(json);
                    }
                    else
                    {
                        List<Relation> list = new List<Relation>();
                        if (datas.Count > 0)
                        {
                            datalist.success = true;
                            datalist.msg = "";
                            for (int i = 0; i < datas.Count; i++)
                            {
                                Relation data = new Relation();
                                data.level = datas[i].GetString("DATA1");
                                data.parent_sn = datas[i].GetString("DATA2");
                                data.child_sn = datas[i].GetString("DATA3");
                                list.Add(data);
                            }
                            datalist.lotInfo = list;
                            string json = JsonConvert.SerializeObject(datalist);
                            Context.Response.Write(json);
                        }
                        else
                        {
                            datalist.success = false;
                            datalist.msg = "No data!";

                            string json = JsonConvert.SerializeObject(datalist);
                            Context.Response.Write(json);
                        }

                    }
                
            }
            catch (Exception ex)
            {
            }
        }

 

posted on 2020-06-10 10:57  Alisa记录  阅读(710)  评论(0)    收藏  举报