我正在使用MVC4构建Web API,并且有些请求返回文本块,这些文本可以包含行制动器,特殊字符,中文和西班牙文本。我应该如何转义/编码通过api发送的信息?
答案 0 :(得分:3)
使用UTF-8编码的这种情况,作为简化示例
public JsonResult Find(string term)
{
var items = service.Find(term);
return Json(items,"application/json; charset=utf-8", JsonRequestBehavior.AllowGet);
}
答案 1 :(得分:1)
使用UTF-8编码文本,使用JSON和HTTP编码。这就够了。当您有换行符和其他特殊字符时,HTTP编码很有用。
Standart在这里 http://www.ietf.org/rfc/rfc4627.txt?number=4627
但是你应该知道不同的json格式化程序在特殊情况下可能会产生稍微不同的结果,例如在如何编码日期/时间的问题中。
UTF-8和DataContractJsonSerializer的示例:
// Create a User object and serialize it to a JSON stream.
public static string WriteFromObject()
{
//Create User object.
User user = new User("Bob", 42);
//Create a stream to serialize the object to.
MemoryStream ms = new MemoryStream();
// Serializer the User object to the stream.
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(User));
ser.WriteObject(ms, user);
byte[] json = ms.ToArray();
ms.Close();
return Encoding.UTF8.GetString(json, 0, json.Length);
}
// Deserialize a JSON stream to a User object.
public static User ReadToObject(string json)
{
User deserializedUser = new User();
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedUser.GetType());
deserializedUser = ser.ReadObject(ms) as User;
ms.Close();
return deserializedUser;
}