我正在使用 MVC4 和一些请求返回文本块构建一个 Web API,这些文本块可以包含换行符、特殊字符、中文和西班牙文文本。我应该如何转义/编码此信息以通过 api 发送?
问问题
15612 次
2 回答
4
像这样使用 UTF-8 编码的东西,作为一个简化的例子
public JsonResult Find(string term)
{
var items = service.Find(term);
return Json(items,"application/json; charset=utf-8", JsonRequestBehavior.AllowGet);
}
于 2012-06-20T18:28:31.293 回答
3
使用 UTF-8 编码文本,使用 JSON 和 HTTP 编码。够了。当您有换行符和其他特殊字符时,HTTP 编码很有用。
标准在这里 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;
}
于 2012-06-20T18:25:21.073 回答