2012-01-25 37 views
2

我正在寻找一种方法来确定与给定语言代码关联的字符集。例如,如果我在英文中传入“en”,它可能会返回a-zA-Z的unicode字符。苹果平台上的API应该是理想的,但如果Unicode中有这样的东西,我可以自己编写代码,但我会解决一个解释。也许喜欢角色类或什么的。有没有办法确定哪些unicode字符集将与给定的语言代码相关联?

+0

无论“字符集”是什么,'a-zA-Z'都是相同的字母和相同的Unicode代码点。你在问如何找到被认为是“单词”字符的东西? – Charles

回答

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数据是一个有用的汇编,但应谨慎小心使用。

+0

很酷。感谢您的回答。 –

相关问题