C#:将UCS4编码转换为Unicode字符

由于Char.MaxValue的值为0xFFFF,所以无法将超过此范围的值通过Convert.ToChar(UInt32)转换为Unicode字符。为此,特写了个转换函数供大家使用。

// 转换UCS4编码到Unicode字符串 public static String UCS4ToString(UInt32 UCS4) { StringBuilder sb = new StringBuilder(2); if (UCS4 <= 0xFFFF) { // 基本平面字符 sb.Append(Convert.ToChar(UCS4)); return sb.ToString(); } else if (UCS4 <= 0xEFFFF) { // 对于辅助平面字符,使用代理项对 sb.Append(Convert.ToChar(0xD800 + (UCS4 >> 10) - 0x40)); sb.Append(Convert.ToChar(0xDC00 + (UCS4 & 0x03FF))); return sb.ToString(); } else { // 超出编码范围 return null; } }  

 

补充:可以直接调用Char静态成员函数ConvertFromUtf32实现。

public static string ConvertFromUtf32(int utf32)

你可能感兴趣的:(String,C#,null)