我正在使用C#.Net
我想知道如何转换Unicode表单字符串,如“\ u1D0EC” (注意它在“\ uFFFF”之上)到它的符号......“”
谢谢你提前!!!
答案 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
上看到整个代码
答案 3 :(得分:0)
您似乎只想在代码中使用此代码...您可以使用转义码\Uxxxxxxxx
将其键入为字符串文字(请注意,这是大写 U,并且必须为8位数)。对于此示例,它将是:"\U0001D0EC"
。