You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中将Unicode字符还原为原\u转义格式字符串?

解决C#中将Unicode字符转回\uXXXX格式的问题

嗨,这个问题的核心得先掰扯清楚:当你写public const string Numeric0 = "\u0030";时,C#编译器已经把这个转义序列直接解析成了对应的字符'0'——也就是说,Numeric0实际存储的就是单个字符0,而不是\u0030这一串文本。所以你要做的是反向操作:把已经解析后的字符重新编码回Unicode转义字符串格式。

这里给你一个直接可用的SomeOperation实现,专门处理这个需求:

using System.Text;

public static string SomeOperation(string input)
{
    StringBuilder sb = new StringBuilder();
    foreach (char c in input)
    {
        // 将字符转为整数,再格式化为4位十六进制,前面拼接\u
        sb.Append($"\\u{(int)c:X4}");
    }
    return sb.ToString();
}

怎么验证效果?

用你的测试代码跑一遍:

public const string Numeric0 = "\u0030";
var str = SomeOperation(Numeric0);
// 此时 str 的值就是 "\u0030",和 @"\u0030" 完全相等
Console.WriteLine(str == @"\u0030"); // 输出 True

补充说明

  • 这个方法是通用的,不管输入的是单个字符还是多字符字符串,每个字符都会被转换成对应的\uXXXX格式。比如输入"AB",会返回"\u0041\u0042"。
  • 如果你只需要处理ASCII范围内的字符,这个逻辑完全适用;如果要处理超出BMP的Unicode字符(比如emoji),可能需要额外处理代理对,但你的场景里应该用不上。

之前你试的Stack Overflow方案没生效,大概率是因为那些方案大多是处理已经包含\u文本的字符串(比如把@"\u0030"解析成'0'),而你的需求是反向的,方向不对自然没用~

内容的提问来源于stack exchange,提问作者Drise

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:23:22