寫了一個接口實現調用別人的接口返回json數據,在自己的接口里輸出json字符串。下面有關於json字符串返回值的中文亂碼問題。
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Web; using System.Web.Services; namespace search { /// <summary> /// SearchWebService 的摘要說明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消注釋以下行。 // [System.Web.Script.Services.ScriptService] public class SearchWebService : System.Web.Services.WebService { [WebMethod] public void LbsSearch(string a,string b) { string url = string.Format("http://url地址?a={0}&b={1}", a, b); var json=GetHtml(url); //TotalInfo TotalInfo = JsonConvert.DeserializeObject<TotalInfo>(json); Context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Context.Response.Write(json); Context.Response.End(); } private string GetHtml(string URL) { var request = (HttpWebRequest)WebRequest.Create(URL);
var response = request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
} } } }
調用的接口讀取的編碼是utf-8編碼,直接response.write(json字符串) 在google被瀏覽器自動解碼了不會出現中文亂碼,而在火狐和ie上則會出現中文亂碼,只需要在返回之前給他中文編碼就行了Context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
