取消转义 mvc 应用程序返回的转义不可编码字符串的简单方法

2023-12-13

我已经检查了其他类似的问题,他们要么建议使用 WebUtility.HtmlDecode() 要么逐个字符替换编码部分,或者假设一些已知的正则表达式模式等。他们不回答这个特定的查询。

我有一个 C# 控制台应用程序,它将一些数据发送到 MVC 应用程序。然后,服务返回的消息被写入一个简单的文本文件。当我将其写入文件时,文本就像

“处理此请求时出现问题!\r\n查看详细日志\u003e d:\\Sandboxes\\UGBNC\\Stage\\Logs\\ArgLog2087129002.log”

我想要的是删除这些编码文本,例如\u0027, \r\n, \\等并在我的文本文件中正确格式化(例如,使用换行符、制表符等)。我不知道所有角色会出现什么,所以我无法将它们替换为string replace or regex replace,我需要一个通用的解决方案。

MVC 服务以 json 形式返回数据Content-Type: application/json; charset=utf-8,我的客户端代码是这样的

try
{
    using (var client = new HttpClient())
    {
        var request = WebRequest.Create(uri);
        //configure request details
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        using (StreamReader sr = new StreamReader(response.GetResponseStream()))
        {
            var message = sr.ReadToEnd();
            //process message
        }
    }
}
catch (WebException wex)
{
    using (var stream = wex.Response.GetResponseStream())
    using (var reader = new StreamReader(stream))
    {
        var message = reader.ReadToEnd(); //this is the encoded string
        File.AppendAllText("SomeTextFile.txt", message);
    }
}

最好/最简单的方法是什么?

Note:我不想逐个字符地替换它们,我想要一个通用的解决方案。


从评论中的链接中,我得到了工作解决方案, 谢谢这个帖子。简而言之,这暂时有效。

var unescapedString = System.Text.RegularExpressions.Regex.Unescape(escapedString);

更长的版本:对于那些可能面临类似问题的人来说,有更多细节。

这是我试图使其理智的字符串的典型示例(可读且可打印)

“处理此请求时出现问题!\r\n查看详细日志\u003e d:\Sandboxes\UGBNC\Stage\Logs\ArgLog2087129002.log”

(1) 虽然该字符串来自 Web 响应,但这不是 HTML,而是 JSON。所以,HTML 解码方法就像新的WebUtility.HtmlDecode(str)或更旧的 System.WebHttpUtility.HtmlDecode(str)不工作。

(2) 类似的字符\u0027是 unicode 字符(这是撇号 '),但尝试使用System.Text.Encoding.Unicode没有取得好的结果。 (也许我错过了这个技巧!)

(3) 基本上我需要的是转换字符,例如\u0027, \r\n, \\到他们的可打印格式。为此System.Text.RegularExpressions.Regex.Unescape()该方法对我的琴弦效果很好。此方法将字符串中的所有转义字符转换为其未转义形式。

Note:使用此方法的朋友请参考msdn doc第一的。这种方法有一定的局限性,并不完美,在某些情况下可能会给出错误的结果。

Check this & this以获得更好的解决方案。

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

取消转义 mvc 应用程序返回的转义不可编码字符串的简单方法 的相关文章

随机推荐

  • R dplyr:非标准评估难度。想要在过滤器和变异中使用动态变量名称

    我创建了一个可重现的示例来说明我在 R dplyr 中进行非标准评估时遇到的问题 我想在下面的场景中使用动态变量名称 Given a data frame of patient data I need to find records con
  • Outlook VBA 打开 Excel

    我正在尝试从 Outlook 打开现有的 Excel 工作表 我可以看到工作簿打开 然后又立即关闭 我将 Excel Application 设置为可见 有任何想法吗 这是代码 Function openNewForm toDoSubjec
  • Spring MVC 转换方法

    我有车辆服务 其中包括零件清单 添加新服务不是问题 查看服务也不是问题 但是当我尝试实现编辑时 它不会预先选择零件列表 所以 认为这是 Thymeleaf 问题 我发布了问题here 我得到的答案是尝试实现 spring 转换服务 我就是这
  • 获取 R 中每组的最后一行[重复]

    这个问题在这里已经有答案了 我有一些结构类似于 a lt data frame ID c A A B B C C NUM c 1 2 4 3 6 9 VAL c 1 0 1 0 1 0 我正在尝试对其进行排序ID and NUM然后得到最后
  • 有效删除 NumPy 中的行

    我有一个很大的 numpy 数组 其中有很多 ID 值 称之为 X X id rating 1 88 2 99 3 77 4 66 我还有另一个 坏ID 的numpy数组 它表示我想从X中删除的行 B 2 3 所以当我完成后 我想 X id
  • 如何在 Firebase 函数中获取提供程序访问令牌?

    我计划编写有关身份验证用户创建的 Firebase 函数 我的目标是获得 Facebook 用户页面的长期访问令牌 为此 我需要 Firebase 函数中的用户访问令牌 下面尝试过 exports saveLongLiveToken fun
  • 如何在 iOS 中检测视频文件是纵向录制还是横向录制

    我在用AlAssetsGroup enumerateAssetsAtIndexes列出照片 相机 应用程序中的资源 对于给定的视频资源 我想确定它是以纵向模式还是横向模式拍摄的 在下面的代码中 资产是AlAsset我已经测试过它是否是视频资
  • AWS VPC私有链接-API网关

    我有一个带有公有子网和私有子网的 VPC NLB 部署到私有子网 并且有 5 个侦听器 port 9000 forwarding to targetgroup 01 port 9001 forwarding to targetgroup 0
  • 为什么 nextjs 在构建时会在第一次加载时加载所有页面

    我在我的新网站中使用 nextJS 但 SEO 和网站的速度对我来说非常重要 我想做的是防止加载额外的资源文件 而我不需要它们 例如 当我在主页时 我不需要在后台加载常见问题解答或关于页面的资源 我是否可以阻止网站上的这些额外负载 先感谢您
  • 将自定义对象存储在 NSUserDefaults 中

    我试图按如下方式存储自定义对象 但出现错误 store data NSMutableArray archiveArray NSMutableArray arrayWithCapacity pOrderElements count for i
  • 细胞景观中折叠/扩张的复合节点

    cytoscape js 是否支持折叠 展开复合节点 Eg before collapsing node1 node1 1 node1 2 node1 2 1 崩溃后 node1 用于展开 折叠的 或 符号会很棒 寻找使用复合节点对一组节点
  • DataGridView 不允许用户删除行

    我有一个 DataGridView 如另一个问题 and AllowUserToDeleteRows被设定为true The docs比如说IBindingList AllowRemove还应该设置为true 然而List好像没有那个接口
  • 在 Weld/Seam3 应用程序上启动 POJO

    我试图在我的 Weld Seam3 应用程序中启动 POJO 但运气不佳 我尝试过以下方法 但没有一个起作用 Singleton public class StartupJobs Inject private Logger log publ
  • 扩展方法和 Razor 页面

    我在 app code 中定义了一个扩展方法 如下所示 public static class Extensions public static string Hi this object obj return hi 在剃刀页面 任何东西都
  • jQuery 隐藏元素,同时保留其在页面布局中的空间

    jQuery 中有没有一种方法可以隐藏元素 但在隐藏时不更改 DOM 我隐藏了某个元素 但是当它被隐藏时 它下面的元素会向上移动 我不希望这种事发生 我希望空间保持不变 但元素可以随意显示 隐藏 我可以这样做吗 代替hide use css
  • 匹配整个文档中的第一个元素? [复制]

    这个问题在这里已经有答案了 我想匹配整个文档中的第一个 H1 元素 然而 现在我面临着一个问题 我正在使用以下 CSS 选择器 h1 first child 但是 它与页面上的多个 H1 标签相匹配 我怎样才能让它只匹配第一个 没有这样的选
  • 如何在插入 RichEditBox 的图像中显示调整大小的装饰器?

    我正在尝试将调整大小的装饰器显示到插入到 UWP 应用程序的 RichEditBox 中的图像 到目前为止 我可以使用以下代码插入图像 private async void InsertImage var picker new FileOp
  • 从 Android 中以编程方式创建的父视图中查找子视图

    对于 Android 应用程序 我使用 GridView 并扩展 BaseAdapter 来组织其内容 对于我在扩展 BaseAdapter 类中重写的函数 getView 我创建了一个 LinearLayout 并在其中附加了一个 Ima
  • Android 模拟器和嵌套虚拟化

    我有个问题 我使用 hyper v 虚拟机来隔离开发过程 我在虚拟机上使用Windows 10 但我无法在我的虚拟机上安装虚拟机管理程序 如何在没有 hyper v 的情况下调试 xamarin forms 应用程序 Thanks 快速回答
  • 取消转义 mvc 应用程序返回的转义不可编码字符串的简单方法

    我已经检查了其他类似的问题 他们要么建议使用 WebUtility HtmlDecode 要么逐个字符替换编码部分 或者假设一些已知的正则表达式模式等 他们不回答这个特定的查询 我有一个 C 控制台应用程序 它将一些数据发送到 MVC 应用