将中文字符转换为Unicode

假设我有一个随机的汉字,玩。 我想将它转换为Unicode,即U + 73A9。 我怎么能在C#中做到这一点?

myChar作为引用你的特殊角色的字符……

Console.WriteLine("{0} U+{1:x4} {2}", myChar, (int)myChar, (int)myChar); 

上面我们输出字符本身,然后是Unicode代码点,然后输出整数值。

减少格式字符串和参数,只输出“U + …”代码…

 Console.WriteLine("U+{0:x4}", (int)myChar); 

characater玩用Unicode。

如果你用C#作为玩具,那么它当前是UTF-16,这是Unicode编码forms之一。

如果您从其他地方获得它,您需要:

  1. 找到它所在的编码。
  2. 获取字节(由流包裹很好)。
  3. 得到一个合适的编码器。
  4. 使用编码器获取字符串(使用文本阅读器包装好的流更好)。

第3步可能很简单(哦,我只是使用那个!)或者很难(darn,必须自己写!)或介于两者之间的某个地方(嘿,有人写过其中一个吗?!)

更长一点的例子,遵循Jon Hanna的答案中的模式:

 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace UnicodeDecodeConsoleApplication { class Program { static void Main(string[] args) { char c = '\u73a9'; char[] chars = {c}; Encoding encoding = Encoding.BigEndianUnicode; byte[] decodeds = encoding.GetBytes(chars); StringBuilder stringBuilder = new StringBuilder("U+"); foreach (byte decoded in decodeds) { stringBuilder.Append(decoded.ToString("x2")); } Console.WriteLine(stringBuilder); Console.ReadLine(); } } } 

–jeroen