将中文字符转换为Unicode

时间:2010-08-26 02:00:24

标签: c# unicode encoding

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

3 个答案:

答案 0 :(得分:5)

myChar 作为引用您特殊角色的字符...

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

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

缩小格式字符串和参数,仅输出“U + ...”代码...

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

答案 1 :(得分:2)

characater玩用Unicode。

如果你在C#中玩它,那么它当前是UTF-16,这是Unicode编码形式之一。

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

  1. 找到它所在的编码。
  2. 获取字节(由流包裹很好)。
  3. 编写一个合适的编码器。
  4. 使用编码器获取字符串(使用文本阅读器包装好的流更好)。
  5. 步骤3可能很简单(哦,我只是使用那个!)或者很难(darn,必须自己写!)或介于两者之间的某个地方(嘿,有人写过其中一个吗?!)

答案 2 :(得分:0)

更长一点的例子,遵循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