我正在寻找一种方法来确定与给定语言代码相关联的字符集。例如,如果我传入英语中的“en”,它可能会返回a-zA-Z的unicode字符。 Apple平台上的API是理想的,但是如果我能用Unicode编写这样的东西,我可以解释一下。也许喜欢角色类或其他东西。
答案 0 :(得分:4)
CLDR数据库中有不同语言使用的字符集。它的格式是基于XML的LDML,但您可以找到它的替代派生格式或API,您可能会发现ICU适用。
这些集在character elements中指定,您可以找到summary charts现有内容,但格式相当笨拙(非常宽的表格)。
快速检查字符上的CLDR数据是否对您的目的有用的最佳方法可能是查看某些区域设置的数据。 root locale data包含(作为大表的一部分)以下有关英语区域设置的信息:
exemplarCharacters main: [a b c d e f g h i j k l m n o p q r s t u v w x y z]
exemplarCharacters auxiliary: [á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ]
exemplarCharacters currencySymbol[a b c č d e f g h i j k l ł m n o º p q r s t u v w x y z]
exemplarCharacters punctuation: [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] @ * / \& # † ‡ ′ ″ §]
我认为这表明这些集合通常过于宽泛。例如,英语的主要集合(字母)甚至不包含“ë”(想想勃朗特),辅助集除了英语中常用的字母外,还包含仅出现在真正外来词中的字母,如“O”。
对这些集合的用途有一个相当含糊的描述。不同的用例需要不同的方法。例如,使用这些集合的并集来决定字体是否适合给定语言的文本(即,它包含所有可接受形状的字符)是很自然的。但这实际上会排除那些很好的字体,但缺少很少使用字符的字形。同样,如果您使用信息来决定可以使用哪些字符编码,您最终会得出结论,只有Unicode编码才能被英语接受。
总之,字符中的CLDR数据是一个有用的编译,但应谨慎使用。