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 に答える