42

我是学习 Unicode 的新手,并且不确定根据我的 ASCII 背景我必须学习多少,但我正在阅读C# 规范中关于标识符的规则以确定Azure 表中允许的字符(直接基于C# 规范)。

在哪里可以找到属于这些类别的 Unicode 字符列表:

  • letter-character: Lu、Ll、Lt、Lm、Lo 或 Nl 类的 Unicode 字符
  • combining-character: Mn 或 Mc 类的 Unicode 字符
  • decimal-digit-character: Nd 类的 Unicode 字符
  • connecting-character: Pc 类的 Unicode 字符
  • formatting-character: Cf 类的 Unicode 字符
4

5 回答 5

45

您可以从官方 Unicode 数据文件中以自动方式检索此信息,该文件UnicodeData.txt在此处发布:

这是一个在每一行中都有分号分隔值的文件。第三列告诉你每个字符的字符类别。

这样做的好处是您可以获得每个角色的角色名称,因此您可以比仅查看角色本身更好地了解它是什么(例如,您知道ბ是什么吗?没错,就是 Ban。在格鲁吉亚语。:-)

于 2010-09-18T17:07:08.377 回答
38

FileFormat.info 按类别列出了 Unicode 字符:

http://www.fileformat.info/info/unicode/category/index.htm

于 2010-09-18T16:52:18.727 回答
15

当然,您可以使用 LINQ:

var charInfo = Enumerable.Range(0, 0x110000)
                         .Where(x => x < 0x00d800 || x > 0x00dfff)
                         .Select(char.ConvertFromUtf32)
                         .GroupBy(s => char.GetUnicodeCategory(s, 0))
                         .ToDictionary(g => g.Key);

foreach (var ch in charInfo[UnicodeCategory.LowercaseLetter])
{
    Console.Write(ch);
}

您可以在MSDN上找到 Unicode 类别及其短名称的列表,例如,“Ll”是UnicodeCategory.LowercaseLetter的缩写。

于 2010-09-18T17:06:17.277 回答
2

https://www.compart.com/en/unicode/category是一个非常有用且易于浏览的网站,用于浏览类别。它是可搜索的,并列出了很多关于单个 unicode 字符的信息。

于 2017-09-11T15:12:57.677 回答
2

ANTLR 词法分析器中,您可以找到方便的范围格式的 Unicode 字符集(LU、LL、LT、LM 和 LO)。

于 2016-02-20T16:55:40.087 回答