【问题标题】:How to check a string is html encoded or not?如何检查字符串是否为 html 编码?
【发布时间】:2016-12-17 14:30:02
【问题描述】:

我正在使用我的 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="

【问题讨论】:

  • %20是HTML编码值的纯文本吗?
  • 是的@Levenko。我得到了这种类型的字符串。
  • 无需检查。只需 html 解码传入的字符串并使用。如果字符串是 htm 编码的,那么你会得到解码的字符串,如果不是,那么你会得到实际的纯字符串。

标签: c# html asp.net-web-api encode


【解决方案1】:

一种技术应该是强制 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);
}

【讨论】:

  • 当你点击“从 Gistlyn 运行代码”时,它工作了吗?
  • 您的代码正在运行。但是如果我有 HTML 编码的字符串,那么它就无法运行。我已经更新了我的问题,请参见 AccessKey 上方的编码字符串
  • 您正在混合使用 HTML 编码和 URL 编码。查看我的编辑
  • 欢迎您。如果是,请将其标记为解决方案。谢谢。
  • @labilbe 这对CJK 字符串无效。
【解决方案2】:

你可以使用

console.log('yourtext');

它将在控制台中显示为原始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2010-12-01
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多