【问题标题】:How can I generate special characters in c#?如何在 C# 中生成特殊字符?
【发布时间】:2014-02-04 19:44:09
【问题描述】:

在记事本中,当我输入 alt+216 时,它会输出一个在我的键盘键上不可用的字符。

我想知道如何在 C# 中使用这个“alt+219”字符来生成包含这个特殊字符的字符串。

有没有办法检索这些特殊字符的列表?

我在 Office 2012 的插入选项卡和符号菜单中看到了这些。 我想知道的是是否可以使用标准 C# 语法或其他东西生成所有这些?

例子:

这些字符在编辑器中工作对我来说非常有趣。

【问题讨论】:

  • 这些字符和其他字符一样。您是在问如何遍历所有百万以上的 Unicode 字符?
  • 起初我想要这个由这个短键(alt+216)产生的字符等于Ø
  • 它是方框图字形之一,'\u256a'。请改用 Windows 上的 Charmap.exe 小程序。只需复制/粘贴到您的代码中即可。
  • 您甚至可以使用许多(但不是全部)语言字符作为代码,例如,允许将变量、方法和类名等内容用日语字符编写。但请不要。
  • 我不想直接为某些响应输入主题

标签: c# unicode


【解决方案1】:

是的,您可以在 C# 中表示所有 Unicode 字符,包括字符串文字。没有像whole range of charts to look at 这样的“特殊”字符列表。找到你感兴趣的角色是U+256A,可以在the box drawing chart(“BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE”)中看到。

您可以使用\u字符文字转义格式来表示C#代码中的字符:

string text = "This is your character: \u256a";

这些键在编辑器中起作用的事实只是 Windows 键盘处理的一部分。

如果您在查找特定字符时遇到问题,您可以随时使用 UTF-8 将文件保存在记事本中,然后按如下方式读取:

using System;
using System.IO;

class Test
{
    static void Main()
    {
        string text = File.ReadAllText("foo.txt");
        foreach (char c in text)
        {
            Console.WriteLine("{0} - {1:x4}", c, (int) c);
        }
    }
}

请注意,某些字符可能无法在控制台上正确显示(尽管十六进制表示会)。

【讨论】:

  • 另一种快速获取未知字符的十六进制字符代码的方法是打开 Web 浏览器并将其作为 '╪'.charCodeAt(0).toString(16) 输入 Javascript 控制台。
  • @bobince: 不错 :) 当然,我真的应该提供一个简短但完整的 Windows 窗体应用程序,它提供了一个 GUI。我可能会稍后尝试并将其包含在博客文章或其他内容中。它不应该超过大约 50 行...
  • 那太好了。哦!在这样的应用程序中,我真正想要的是在您键入/粘贴字符时获取字符,并以十六进制显示它们作为完整的代码点、UTF-16 代码单元和 UTF-8 字节,以明确如何一切正常。也许在 ANSI 字节中,显示哪些字符不适合 ANSI 代码页。如果它可以向您显示包含您的字符的 all 编码,那就太棒了。而且它应该有月亮在一根棍子上。万岁!
  • @bobince:显示 UTF-8 编码会很好,是的。并处理非 BMP 字符以显示代理对和 UTF-32 值。就 UI 设计而言,这比其他任何事情都更具挑战性,但我会看看我能做些什么......
  • @bobince:用 C# 实现,然后也用 Javascript 实现。见csharpindepth.com/Articles/General/Unicode.aspx#explorer
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 2011-05-17
  • 2020-01-21
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多