我正在使用C# .Net
我想知道如何将Unicode格式的字符串(如"\u1D0EC",请注意它在"\uFFFF"上方)转换为其符号... " "
提前感谢!
我正在使用C# .Net
我想知道如何将Unicode格式的字符串(如"\u1D0EC",请注意它在"\uFFFF"上方)转换为其符号... " "
提前感谢!
该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();
}
}
使用 int.Parse(String, NumberStyles)
和 char.ConvertFromUtf32
将每个序列转换:
string s = @"\U1D0EC";
string converted = char.ConvertFromUtf32(int.Parse(s.Substring(2), NumberStyles.HexNumber));
我最近在Codeplex上发布了我的FOSS Uncode Converter(http://unicode.codeplex.com)。
你可以将任何想要转换的内容转换为十六进制代码,也可以从十六进制代码中获取正确的字符,还有一个完整的信息字符数据库。
我使用这段代码。
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/上查看完整的代码。
看起来你只是想在你的代码中使用它... 你可以使用转义码\Uxxxxxxxx
将其作为字符串文字输入(请注意,这是一个大写的U,并且必须有8个数字)。 对于这个例子,它应该是:"\U0001D0EC"
。