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) { } }
浙公网安备 33010602011771号