将unicode字符的十六进制序列解码为字符串的最佳方法

Jac*_*ack 4 c# unicode decode

我正在使用C#.Net

我想知道如何将Unicode表单字符串转换为"\ u1D0EC"(注意它在"\ uFFFF"之上)到它的符号......""

谢谢你!

Han*_*ant 7

该Unicode码点以UTF32编码..NET和Windows以UTF16编码Unicode,你必须翻译.UTF16使用"代理对"来处理0xffff以上的代码点,这种方法与UTF8类似.该对的第一个代码是0xd800..dbff,第二个代码是0xdc00..dfff.试试这个示例代码,看看它在工作:

using System;
using System.Text;

class Program {
  static void Main(string[] args) {
    uint utf32 = uint.Parse("1D0EC", System.Globalization.NumberStyles.HexNumber);
    string s = Encoding.UTF32.GetString(BitConverter.GetBytes(utf32));
    foreach (char c in s.ToCharArray()) {
      Console.WriteLine("{0:X}", (uint)c);
    }
    Console.ReadLine();
  }
}
Run Code Online (Sandbox Code Playgroud)