今天前端在群里和我说,节目评论中有空格 然后接口编码后返回的评论 空格变+++号,然后就认为编码有问题,各自进行实验和替换,好在最终解决了。
评论内容:
666 23333
有木有wifi 有木有wifi
有而且耐用5毛的 QAQ
解析返回的JSON
{
"DisUserId": "1090",
"DisId": "1141",
"HeadPic": "UpLoadImg/HeadImage/9d78b3ff-c1c5-485b-8d69-dc35bfdd98e8.jpg",
"Nickname": "晨曦",
"DicussInfo": "666++++++23333",
"DiscussTime": "2016/10/19 13:50:39"
},
{
"DisUserId": "1090",
"DisId": "1142",
"HeadPic": "UpLoadImg/HeadImage/9d78b3ff-c1c5-485b-8d69-dc35bfdd98e8.jpg",
"Nickname": "晨曦",
"DicussInfo": "%e6%9c%89%e6%9c%a8%e6%9c%89wifi+%e6%9c%89%e6%9c%a8%e6%9c%89wifi",
"DiscussTime": "2016/10/19 13:52:44"
},
前端进行解码依然有+++号
Server.UrlEncode 编码后内容里空格变加号的解释:
接口中
Context.Response.Charset = "utf-8";
Context.Response.AddHeader("content-type", "text/
plain
; charset=utf-8");
这时候问题就来了, 因为 UrlEncode 在 Encode 的时候, 将空格转换成加号('+'), 在 Decode 的时候将加号转为空格, 但是浏览器是不能理解加号为空格的, 空格就变成了加号.
参考资料 http://blog.csdn.net/xingxing513234072/article/details/7865083
解决方法:
1:
Server.UrlEncode =》Uri.EscapeDataString 参考资料 http://www.cnblogs.com/dudu/archive/2011/02/25/asp_net_UrlEncode.html
2:
Regex.Replace( HttpUtility.UrlEncode("c# urlencode 空格变加号 解决办法"),@"\+","%20");
编码后返回的JSon信息
注意这里已经由+++号变成%20(空格)了//空格是被解释%20
{
"DisUserId": "1090",
"DisId": "1142",
"HeadPic": "UpLoadImg/HeadImage/9d78b3ff-c1c5-485b-8d69-dc35bfdd98e8.jpg",
"Nickname": "晨曦",
"DicussInfo": "%E6%9C%89%E8%80%8C%E4%B8%94%E8%80%90%E7%94%A85%E6%AF%9B%E7%9A%84%20%20%20QAQ",
"DiscussTime": "2016/10/19 13:52:44"
},解码后 弹出的信息是: