13

我正在使用 MVC4 和一些请求返回文本块构建一个 Web API,这些文本块可以包含换行符、特殊字符、中文和西班牙文文本。我应该如何转义/编码此信息以通过 api 发送?

4

2 回答 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 回答