2017-05-05 69 views
2

我有特殊字符的文本trmp %al1 €haced£rs Àc17ç如何編碼和解碼特殊字符在C#

考慮到我傳遞數據的通道不支持這些特殊字符,並且目標需要解碼編碼文本以獲取原始數據。

我試着看Base64 encoding,decodingHTML encoding/decoding並沒有什麼似乎保留相同的數據。

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

+0

的Base64將不起作用在這種情況下,因爲它適用於可打印的字符集。 – loneshark99

+0

渠道支持哪些字符集? –

回答

3

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(); 
     } 
    } 
} 
1

,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);