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

时间:2010-01-02 19:11:35

标签: c# unicode decode

我正在使用C#.Net

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

谢谢你提前!!!

4 个答案:

答案 0 :(得分: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();
  }
}

答案 1 :(得分:2)

使用int.Parse(String, NumberStyles)char.ConvertFromUtf32转换每个序列:

string s = @"\U1D0EC";
string converted = char.ConvertFromUtf32(int.Parse(s.Substring(2), NumberStyles.HexNumber));

答案 2 :(得分:1)

我最近在Codeplex(http://unicode.codeplex.com

推送了我的FOSS Uncode Converter

你可以将你想要的任何内容转换为Hex代码,并从Hex代码转换为正确的字符,还有一个完整的信息字符数据库。

我使用此代码

public static char ConvertHexToUnicode(string hexCode)
    {
        if (hexCode != string.Empty)
            return ((char)int.Parse(hexCode, NumberStyles.AllowHexSpecifier));

        char empty = new char();
        return empty;
    }//end

您可以在http://unicode.codeplex.com/

上看到整个代码

答案 3 :(得分:0)

您似乎只想在代码中使用此代码...您可以使用转义码\Uxxxxxxxx将其键入为字符串文字(请注意,这是大写 U,并且必须为8位数)。对于此示例,它将是:"\U0001D0EC"