如何在C#中unescape unicode字符串

我有一个来自文本文件的Unicode字符串。 我想展示真实的角色。

例如:

\u8ba1\u7b97\u673a\u2022\u7f51\u7edc\u2022\u6280\u672f\u7c7b 

当从文本文件中读取此字符串时,使用StreamReader.ReadToLine() ,它将\转义为'\\'例如"\\u8ba1" ,这是不需要的。

它将显示与文本相同的Unicode字符串。 我想要的是显示真实的角色。

  1. 如何在结果字符串中将"\\u8ba1"更改为"\u8ba1"
  2. 或者应该使用另一个Reader来读取字符串?

如果你有像这样的字符串

 var input1 = "\u8ba1\u7b97\u673a\u2022\u7f51\u7edc\u2022\u6280\u672f\u7c7b"; // input1 == "计算机•网络•技术类" 

你不需要任何东西。 它只是包含转义序列的字符串文字,而不是字符串本身。


如果你有像这样的字符串

 var input2 = @"\u8ba1\u7b97\u673a\u2022\u7f51\u7edc\u2022\u6280\u672f\u7c7b"; 

你可以使用以下正则表达式来解决它:

 var result = Regex.Replace( input2, @"\\[Uu]([0-9A-Fa-f]{4})", m => char.ToString( (char)ushort.Parse(m.Groups[1].Value, NumberStyles.AllowHexSpecifier))); // result == "计算机•网络•技术类" 

这个问题出现在谷歌搜索的第一个结果,但我认为应该有一个更简单的方式…这是我最终使用的:

 using System.Web; //... string x = HttpUtility.UrlDecode("Ingl\u00e9s"); Console.Write(x); // Inglés