我不知道确切的技术术语,但作为标准的 UTF-8 包括来自某些语言分组的字符,可以在 Windows Character Map中使用Arial Unicode MS之类的字体观察到这些字符。
- 拉丁
- 西里尔
- 希腊语
- 希伯来语
- 阿拉伯
- 梵文
- 古吉拉特语
- 卡纳达语
- 老挝
- 平假名
- 货币符号
- 箱图
如何获取每组下的角色列表?这可能是一个 API,也可能只是网络上某个地方的普通列表/数据库。我找到了列出所有内容的wiki 文章,但不是以可迭代的形式。有任何想法吗?
您可以在已发布的UnicodeData.txt中访问完整的 unicode 字符列表,这是一个 CSV 格式的文件,其中列出了带有组信息的每个字符。
第三列以 2 位短格式指定字符类,长格式在此处指定。
letter-character
-- Lu、Ll、Lt、Lm、Lo 或 Nl 类combining-character
-- Mn 或 Mc 类decimal-digit-character
-- Nd 级connecting-character
-- 个人电脑类formatting-character
-- 类 Cf甚至可以使用 C# 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);
}
但是,没有明确提及语言分组,因此您必须解析名称的第一个单词以按语言对每个字符进行分组。这是最可靠的方法,因为每个拉丁 unicode 字符都以前缀"Latin"开头。示例如下: