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

C#中如何将大于0xFFFF的Unicode字符数值转换为对应字符串

C# Unicode码点转字符串实现方案

方法1:调用内置API(推荐)

.NET 全家桶都内置了char.ConvertFromUtf32静态方法,直接传入32位Unicode码值即可返回对应字符串,兼容.NET Framework 2.0及以上、所有.NET Core、.NET 5+版本:

// 示例:转换U+20000为对应的"𠀀"字符串
int unicodeCode = 0x20000;
string targetStr = char.ConvertFromUtf32(unicodeCode);

方法2:手动实现编码逻辑

如果需要自行实现转换,可按照UTF-16代理对的编码规则计算:

  1. 对于≤0xFFFF的基础平面字符,直接转成char再转字符串即可
  2. 对于≥0x10000的补充平面字符,先将码值减去0x10000,再分别计算高位代理和低位代理,最后将两个代理字符合并为字符串
    实现代码如下:
public static string CodePointToString(int codePoint)
{
    if (codePoint is < 0 or > 0x10FFFF)
        throw new ArgumentOutOfRangeException(nameof(codePoint), "不属于合法Unicode码点范围");
    // 基础平面字符直接转换
    if (codePoint <= 0xFFFF)
        return ((char)codePoint).ToString();
    // 计算代理对
    codePoint -= 0x10000;
    char highSurrogate = (char)(0xD800 + (codePoint >> 10));
    char lowSurrogate = (char)(0xDC00 + (codePoint & 0x3FF));
    return new string(new []{ highSurrogate, lowSurrogate });
}

注意事项

  • 合法的Unicode码点范围是 0x0 ~ 0x10FFFF,输入超出范围会导致异常或乱码
  • 两种方法对普通BMP字符和扩展平面字符都能正常适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:15:04