6

正確な技術用語はわかりませんが、標準としての UTF-8 には特定の言語グループの文字が含まれています。これは Windows Character MapでArial Unicode MSのようなフォントで確認できます。

  • ラテン
  • キリル
  • ギリシャ語
  • ヘブライ語
  • アラビア語
  • デヴナガリ
  • グジュラート語
  • カンナダ語
  • ラオ語
  • ひらがな
  • 通貨記号
  • 箱絵

各セットのキャラクターのリストを取得するにはどうすればよいですか? これは、API またはネット上のどこかにある単純なリスト/DB である可能性があります。すべてをリストしたwiki 記事を見つけましたが、反復可能な形式ではありませんでした。何か案は?

4

1 に答える 1

6

グループ情報を含むすべての文字をリストする CSV 形式のファイルである公開されたUnicodeData.txtで、ユニコード文字の完全なリストにアクセスできます。

クラスごとのグループ化

3 番目の列は、ここで指定された 2 桁のショートフォーム、ロングフォームで、文字クラスを指定します

  • letter-character-- クラス Lu、Ll、Lt、Lm、Lo、または Nl
  • combining-character-- クラス Mn または Mc
  • decimal-digit-character-- クラス Nd
  • connecting-character-- クラス PC
  • 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"で始まるため、これが最も信頼できる方法です。例は次のとおりです。

  • ラテン語:ラテン大文字 A
  • Latin Extended A:急性ラテン小文字 C
  • ラテン語拡張 B:ラテン語の大文字のトーン 6
  • ラテン拡張追加:ラテン大文字 B 上にドット
于 2013-03-18T08:53:31.293 に答える