将中文字符转换为 Unicode

发布于 2024-09-16 15:19:50 字数 64 浏览 5 评论 0原文

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

Let's say I have a random Chinese character, 玩. I want to convert it to Unicode, which would be U+73A9. How could I do this in C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

缘字诀 2024-09-23 15:19:50

myChar 作为引用特殊字符的字符...

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

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

减少格式字符串和参数以仅输出“U+...”代码...

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

Take myChar as a char referencing your special character...

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

Above we're outputting the character itself followed by the Unicode code point and then the integer value.

Reduce the format string and parameters to output only the "U+..." code...

Console.WriteLine("U+{0:x4}", (int)myChar);
深爱不及久伴 2024-09-23 15:19:50

字符玩是 Unicode 格式的。

如果在 C# 中将其称为“玩”,那么它当前采用 UTF-16 格式,这是 Unicode 编码形式之一。

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

  1. 找到它所在的编码。
  2. 获取字节(用流包装很好)。
  3. 获取编写适当的编码器。
  4. 使用编码器获取字符串(用文本阅读器包装漂亮的流更好)。

第 3 步可能很简单(哦,我只是用那个!)或很困难(该死,必须自己写!)或介于两者之间(嘿,有人已经写过其中之一了吗?!)

The characater 玩 is in Unicode.

If you have it in C# as 玩, then it's currently in UTF-16, which is one of the Unicode encoding forms.

If you are obtaining it from somewhere else you need to:

  1. Find the encoding it is in.
  2. Get the bytes (wrapped by a stream is nice).
  3. Get of write an appropriate Encoder.
  4. Use the encoder to get the string (wrapping the nice stream with a textreader is nicer).

Step 3 May be simple (oh, I just use that one!) or hard (darn, have to write it myself!) or somewhere in between (hey, anyone written one of these already?!)

眼眸印温柔 2024-09-23 15:19:50

一个更长一点的例子,遵循乔恩·汉纳(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

A bit longer example, that follows the pattern in Jon Hanna's answer:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文