如何解码包含 \x3c 等的 Feedburner 结果

2024-02-28

Feed Burner 更改了他们的博客服务返回结果,它返回类似于以下内容的 JavaScript 块:

文档.write("\x3cdiv 类\x3d\x22feedburnerFeedBlock\x22 id\x3d\x22RitterInsuranceMarketingRSSv3iugf6igask14fl8ok645b6l0\x22\x3e"); document.write("\x3cul\x3e"); 文档.write("\x3cli\x3e\x3cspan 类\x3d\x22标题\x22\x3e\x3ca href\x3d\x22

我想要原始的 html。以前,我可以轻松地使用 .Replace 来删除 document.write 语法,但我无法弄清楚这是什么类型的编码,或者至少无法弄清楚如何使用 C# 对其进行解码。

Edit:好吧,这是一个最终要解决的半噩梦,这就是我想出的方案,以防有人可以提供任何改进

public static  char ConvertHexToASCII(this string hex)
{
    if (hex == null) throw new ArgumentNullException(hex);
    return (char)Convert.ToByte(hex, 16);
}

.

private string DecodeFeedburnerHtml(string html)
{
    var builder = new StringBuilder(html.Length);
    var stack = new Stack<char>(4);
    foreach (var chr in html)
    {
        switch (chr)
        {
            case '\\':
                if (stack.Count == 0)
                {
                    stack.Push(chr);
                }
                else
                {
                    stack.Clear();
                    builder.Append(chr);
                }
                break;
            case 'x':
                if (stack.Count == 1)
                {
                    stack.Push(chr);
                }
                else
                {
                    stack.Clear();
                    builder.Append(chr);
                }
                break;
            default:
                if (stack.Count >= 2)
                {
                    stack.Push(chr);

                    if (stack.Count == 4)
                    {
                        //get stack[3]stack[4]
                        string hexString = string.Format("{1}{0}", stack.Pop(),
                                                     stack.Pop());

                        builder.Append(hexString.ConvertHexToASCII());
                        stack.Clear();
                    }
                }
                else
                {
                    builder.Append(chr);
                }
                break;
        }
    }

    html = builder.ToString();
    return html;
}

不知道还有什么我可以做得更好。由于某种原因,这样的代码对我来说总是感觉很脏,即使它是一个线性时间算法,我想这与它必须有多长有关。


在 dotnet core 中,您可以使用 Uri.UnescapeDataString(originalString.Replace("\x","%")) 首先将其转换为 Url 编码字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解码包含 \x3c 等的 Feedburner 结果 的相关文章

随机推荐

  • TOD 时钟时间为 java.util.Date 或毫秒

    我有一个数据库表 其中填充了通过 ETL 来自大型机的数据 该表的一列称为 TOD 如 Time Of Day 中的 TOD 该列存储诸如以下的值 CAE7631DC43DC686 CAE7631C4AC6DC0B CAE6216DF2BC
  • 如何通过 JDBC 使用 Windows 密钥库 (MCS)?

    我正在尝试创建一个使用java应用程序PKI用于身份验证 我需要能够从 Microsoft 证书存储 MCS 检索证书并将其传递到 Oracle 数据库 11 2 我正在使用jdbc oracle thin司机 在谷歌上花了相当长的时间后
  • 有没有办法拆分/分解 Gradle 构建的公共部分

    我们有几个独立的构建 每个独立构建都是一个多项目构建 主要构建脚本变得相当大 因为我们有一组由子项目重用的常见任务 独立构建之间也存在大量重复 我们正在寻找的是 一种分割主构建文件的方法 分成较小的文件 重用某些部分的方法 在其他独立构建中
  • HTML5 / Javascript - DataURL 到 Blob 和 Blob 到 DataURL

    我有一个来自画布的 DataURL 显示了我的网络摄像头 我使用 Matt 的答案将此 dataURL 转换为 blob 如何在javascript中将dataURL转换为文件对象 https stackoverflow com quest
  • 如何显示Eclipse的隐藏工具栏

    Eclipse 有一个上下文菜单项来隐藏 RCP 的整个工具栏 显示隐藏工具栏的相应菜单项在哪里 我知道如果使用新的工作区应该显示它 不过我希望在eclipse的GUI中找到相关的功能 使用 窗口 菜单 那里有一个 显示工具栏 选项
  • fputcsv 将 HTML 代码插入 csv 文件

    我在使用 fputcsv 写入 csv 文件时遇到问题 它将页面 html 也放入 csv 文件中 我的代码有什么问题吗 Excel header header Content Disposition attachment filename
  • 如何使用 Statsmodels.api 获取回归截距

    我正在尝试使用 python 库计算回归输出 但在使用该库时无法获取截距值 import statsmodels api as sm 它打印除截距之外的所有回归分析 但是当我使用时 from pandas stats api import
  • Facebook 发送对话框:在描述中添加换行符

    这是我必须向我的应用程序发送邀请的 URL https www facebook com dialog send app id MY APP ID name hola link http www aWebSite com picture h
  • 带有路径点的 Google 地图 Intent 的 URI

    我想添加到我的应用程序中打开超过 2 个点的 Google 地图应用程序的功能 但我只能设置起点和终点 如何添加航点 我已经尝试过 uri 中所述https stackoverflow com a 13565504 3626048 http
  • C# - 如何按彩虹顺序排列颜色列表?

    从图像列表中 我使用一种方法计算了平均颜色与此类似 https stackoverflow com a 1068399 7918485 我现在有一个清单System Drawing Color 但我不知道如何以看起来像彩虹的方式对它们进行排
  • 使用循环在 Gnuplot 中生成绘图

    我想使用 Gnuplot 生成几个图 这就是我需要使用循环的原因 数据从文件 sort i dat 加载 代码如下所示 但不起作用 我的主循环有一些问题 我不知道为什么它不起作用 也许它与我的 Gnuplot 版本有关 谢谢 do for
  • 滑动效果就像三星打电话和发消息一样[重复]

    这个问题在这里已经有答案了 我需要在列表视图中实现滑动 就像在三星 Android 设备中一样 在通话记录中 当我们从左向右滑动时 正在放置呼叫 从右向左滑动则放置消息 使用 swipeListView 可以吗滑动列表查看演示 https
  • 如何在 Eigen 中初始化 SparseVector

    如何在 Eigen 中初始化 SparseVector 下面的代码 define EIGEN YES I KNOW SPARSE MODULE IS NOT STABLE YET include
  • 关联数组中的双索引

    我正在使用 Node js 构建服务器 我将代表用户的对象存储在关联数组中 现在这些对象的索引就是该连接的套接字 ID 使用 Socket io 库 我通过简单地执行 socket id 来获取它 因此对于处理我的请求的每个处理程序 我始终
  • Spring Boot、Spring-Security - 新的基于组件的安全配置中的 BcrypPasswordEncoder

    我正在尝试使用新的基于组件 不带 WebSecurityConfigurerAdapter 配置并设置我的安全配置 如下所示 安全配置 java 文件 package com tito userservice security import
  • 页面重定向后 Yii2 用户身份丢失

    我正在 yii2 中进行用户登录 但不是使用活动记录 而是由另一台服务器处理用户用户名和密码的验证 因此 以下是我所做的解决方法 in LoginForm php 我做了一些改变validatePassword which apiRest
  • Azure 模拟器连接错误

    我安装了 Azure 存储 v3 4 和计算模拟器 v2 5 并且可以在计算模拟器中检查我的部署 但每当我尝试可视化表或 blob 的内容时 我都会收到以下信息来自 Visual Studio 的错误 无法加载文件或程序集 Microsof
  • Python NetworkX 从作为根的节点在有向图中查找子图

    我正在编写一个代码来从有向图中提取信息 该图也有循环 例如 A gt B gt C gt D A gt E gt F gt A B gt F gt G 从这个图中 我想创建一个子图或节点列表 其中输入可以是任何节点 输出可以是输入节点是根的
  • 在视图控制器转换中获取子视图的最终帧

    我正在 iOS 7 中的视图控制器之间实现自定义转换 特别是 我在视图控制器 A 和视图控制器 B 中具有相同的按钮 唯一的区别在于其位置 在视图控制器 B 中稍高一些 我希望在从视图控制器 A 到视图控制器 B 的转换中 A 中的按钮向上
  • 如何解码包含 \x3c 等的 Feedburner 结果

    Feed Burner 更改了他们的博客服务返回结果 它返回类似于以下内容的 JavaScript 块 文档 write x3cdiv 类 x3d x22feedburnerFeedBlock x22 id x3d x22RitterIns