【问题标题】:Decode special characters from json data in c#从 C# 中的 json 数据中解码特殊字符
【发布时间】:2016-02-18 09:07:03
【问题描述】:

我从 url 获取 json 格式的数据。一切都很完美,但一个小问题是我得到的数据中有一些特殊字符,例如:

Get 50% off on Pizzas between 11am – 5pm.

–这里的意思是'-',但是我如何在c#中解码它,让它把它当作'-'。

我尝试过使用 Html.decode 方法,它适用于 URL,但不适用于数据。

我无法将– 到处都替换为“-”,因为这不是一个案例,还有其他类似的字符。

【问题讨论】:

  • 没有 Html.Decode 你是指 WebUitity 还是 HttpUtility?
  • WebUtility/HttpUtility.decode 无论是什么类型的字符串(其他的 url)都可以工作。

标签: c# json decode


【解决方案1】:

工作正常:

https://dotnetfiddle.net/H9rpLe

using System;

public class Program
{
    public static void Main()
    {
        string data = System.Net.WebUtility.HtmlDecode("Get 50% off on Pizzas between 11am – 5pm"); 

        Console.WriteLine(data);
    }
}

输出:在上午 11 点至下午 5 点之间购买披萨可享受 50% 的折扣

【讨论】:

  • 你是对的,它可以工作,但只是为了让你知道你的小提琴使用–,而不是&ndash - 它在这两种情况下都可以工作:-)
  • dotnetfiddle 坏了:dotnetfiddle.net/1TA9GU - 我的原始代码是WriteLine("a – b");
  • @RB。奇怪的是,我从小提琴中复制了粘贴,它显示正确(使用放大器)......
  • 听起来 Wapac 找到了罪魁祸首 - 很有趣 :)
  • 感谢大家提供此信息,问题已解决。非常感谢。
【解决方案2】:

我认为这是 question 的副本。

你可以使用 HttpUtility.HtmlDecode

如果您使用的是 .NET 4.0+,您还可以使用 WebUtility.HtmlDecode,它不需要额外的程序集引用,因为它在 System.Net 命名空间中可用。

【讨论】:

    【解决方案3】:

    尝试对其进行两次解码,因为您似乎已对其进行了两次编码。第一次解码会将– 转换为–,然后第二次解码将转换为

    using System;
    using System.Web;
    
    public class Test
    {
        public static void Main()
        {
            string s = "Get 50% off on Pizzas between 11am – 5pm.";
            Console.WriteLine(s);
    
            string d = HttpUtility.HtmlDecode(s);
            Console.WriteLine(d);
    
            string e = HttpUtility.HtmlDecode(d);
            Console.WriteLine(e);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多