【问题标题】:How to encode and decode special chars in C#如何在 C# 中编码和解码特殊字符
【发布时间】:2017-05-05 04:42:07
【问题描述】:

我有带有特殊字符的文本trmp %al1 €haced£rs Àc17ç

考虑到我传递数据的通道不支持这些特殊字符,并且目的地需要对编码文本进行解码以获得原始数据。

我尝试查看Base64 encoding,decodingHTML encoding/decoding,但似乎没有任何东西保留相同的数据。

来源和目的地是C# process (supports these charset)

【问题讨论】:

  • Base64 在这种情况下不起作用,因为它面向可打印字符集。
  • 频道支持哪些字符集?

标签: c# decode encode


【解决方案1】:

HTML 编码/解码似乎对我有用:

using System;
using System.Net;

namespace StackOverflow_EncodingSpecialCharacters
{
    class Program
    {
        static void Main(string[] args)
        {
            const string input = @"trmp % al1 €haced£rs Àc17ç";
            Console.WriteLine($"Input:  \t{input}");

            string encoded = WebUtility.HtmlEncode(input);
            Console.WriteLine($"Encoded: \t{encoded}");

            string output = WebUtility.HtmlDecode(encoded);
            Console.WriteLine($"Output: \t{output}");

            Console.ReadKey();
        }
    }
}

【讨论】:

    【解决方案2】:

    另外,在 System.Web 程序集下:

                string decoded = System.Web.HttpUtility.HtmlDecode(input);
                string encoded = System.Web.HttpUtility.HtmlEncode(input);
    
    // similar for URLs (like converting the space to plus sign, etc.)
                string urldecoded = System.Web.HttpUtility.UrlDecode(url);
                string urlencoded = System.Web.HttpUtility.UrlEncode(url);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多