如何检查字符串是html编码或不
本文关键字:html 编码 字符串 何检查 检查 | 更新日期: 2023-09-27 18:01:54
我正在使用我的web API。有些用户发送的参数字符串作为HTML编码,我想确定未来的参数是HTML编码或纯文本。
我的Web API方法是public HttpResponseMessage Get(string Accesskey, string AccessPwd)
{
// code logic
}
我得到Accesskey作为Html编码像
Accesskey="AbIfZVn4y514sJbt%2BCCMJy6lsmsMi6uOWyhUhynDSf1MEqZ%2FWJnwUuCFO8zMFa4jCRWQrXHKdBaHd9CCdDNfoKDnPg1W9No16JQbL2DBEGg%3D";
我希望输出像
Accesskey="AbIfZVn4y514sJbt+CCMJy6lsmsMi6uOWyhUhynDSf1MEqZ/WJnwUuCFO8zMFa4jCRWQrXHKdBaHd9CCdDNfoKDnPg1W9No16JQbL2DBEGg="
一种技术应该是强制URL解码并检查结果是否与源字符串相同。
using System;
using System.Web;
var incomingStrings = new[] { "not encoded", "encodéd" };
foreach (var incomingString in incomingStrings)
{
Console.WriteLine(IsUrlEncoded(incomingString));
}
private bool IsUrlEncoded(string source)
{
return source != HttpUtility.UrlDecode(source);
}
我也遇到过这个问题。我的文本值并不总是编码HTML,它可以只是编码文本。当我使用
这样的方法时HttpUtility.HtmlDecode(值)
总是返回相同的文本,未解码。所以这对我来说不是工作。
为了解决这个问题,我使用了一种粗略的方法,检查字符串是否通常是编码文本。
if (!string.IsNullOrEmpty(value) && value.Length % 4 == 0 && !value.Contains(" ") &&
!value.Contains("'t") && !value.Contains("'r") && !value.Contains("'n"))
{
// it's encoded text value
}
- 编码文本的长度总是4的倍数。 编码文本永远没有空格。
- 编码文本永远不会有任何制表符或换行符。
你可以直接使用
console.log('yourtext');