如何在C#中unescape unicode字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C#中unescape unicode字符串相关的知识,希望对你有一定的参考价值。

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

例如:

u8ba1u7b97u673au2022u7f51u7edcu2022u6280u672fu7c7b

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

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

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

如果你有像这样的字符串

var input1 = "u8ba1u7b97u673au2022u7f51u7edcu2022u6280u672fu7c7b";

// input1 == "计算机•网络•技术类"

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


如果你有像这样的字符串

var input2 = @"u8ba1u7b97u673au2022u7f51u7edcu2022u6280u672fu7c7b";

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

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("Inglu00e9s");
Console.Write(x); // Inglés

以上是关于如何在C#中unescape unicode字符串的主要内容,如果未能解决你的问题,请参考以下文章

PHP - json_encode(string, JSON_UNESCAPED_UNICODE) 不转义捷克字符

PHP的json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案

带有选项 JSON_UNESCAPED_UNICODE 的 json_encode [关闭]

PHP输出json数据时,中文不进行unicode编码

如何使用转义的 unicode 解码字符串?

PHP json_encode里面经常用到的 JSON_UNESCAPED_UNICODE和JSON_UNESCAPED_SLASHES