5

I'm working with C# .Net

I would like to know how to convert a Unicode form string like "\u1D0EC" (note that it's above "\uFFFF") to it's symbol... ""

Thanks For Advance!!!

4

4 回答 4

7

该 Unicode 代码点以 UTF32 编码。.NET 和 Windows 将 Unicode 编码为 UTF16,您必须进行翻译。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();
  }
}
于 2010-01-02T19:30:22.780 回答
2

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

string s = @"\U1D0EC";
string converted = char.ConvertFromUtf32(int.Parse(s.Substring(2), NumberStyles.HexNumber));
于 2010-01-02T19:32:03.087 回答
1

我最近在 Codeplex ( http://unicode.codeplex.com )上推送了我的 FOSS Uncode Converter

您可以将任何您想要的十六进制代码和十六进制代码转换为正确的字符,还有一个完整的信息字符数据库。

我使用此代码

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/上查看完整代码

于 2010-01-04T15:03:33.137 回答
0

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

于 2010-05-12T12:05:35.023 回答