protected string toJSonString(string s)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.Length; i++)
{
char c = s[i];
switch (c)
{
case '\"':
sb.Append("\\\"");
break;
case '\\':
sb.Append("\\\\");
break;
case '/':
sb.Append("\\/");
break;
case '\b':
sb.Append("\\b");
break;
case '\f':
sb.Append("\\f");
break;
case '\n':
sb.Append("\\n");
break;
case '\r':
sb.Append("\\r");
break;
case '\t':
sb.Append("\\t");
break;
case '=':
sb.Append("=");
break;
case '&':
sb.Append("&");
break;
case '?':
sb.Append("?");
break;
case '%':
sb.Append("%");
break;
default:
if ((c >= 0 && c <= 31) || c == 127)//在ASCⅡ码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符
{
}
else
{
sb.Append(c);
}
break;
}
}
//return Server.UrlEncode(str);
//return Server.UrlPathEncode(Server.UrlPathEncode(str));
//return HttpUtility.UrlPathEncode(sb.ToString());
return sb.ToString();
}
不仅仅空格和换行要转,这几个都需要转, 转全角字符的那几个是因为小程序页面间传参数需要转。