如何将Unicode块与语言/脚本关联?

如何将Unicode块与语言/脚本关联?,unicode,localization,internationalization,Unicode,Localization,Internationalization,我试图找到一种资源,可以用来将语言(或者更可能是脚本)连接到Unicode字符块。此类资源将用于查找诸如“法语中使用了哪些Unicode块?”或“哪些语言使用0A80-0AFF()中的块?”之类的问题。您知道此类资源吗 我希望能够在网站上轻松找到这些信息。我很快就找到了一个很好的表格,将国家代码与语言联系起来()。但我花了相当多的时间四处探索,却没有找到与Unicode块和语言相关的东西。有可能我遇到了一个术语问题,阻碍了我在这里连接点 在这种情况下,我对“语言”(Java语言环境代码或ISO

我试图找到一种资源,可以用来将语言(或者更可能是脚本)连接到Unicode字符块。此类资源将用于查找诸如“法语中使用了哪些Unicode块?”或“哪些语言使用0A80-0AFF()中的块?”之类的问题。您知道此类资源吗

我希望能够在网站上轻松找到这些信息。我很快就找到了一个很好的表格,将国家代码与语言联系起来()。但我花了相当多的时间四处探索,却没有找到与Unicode块和语言相关的东西。有可能我遇到了一个术语问题,阻碍了我在这里连接点

在这种情况下,我对“语言”(Java语言环境代码或ISO 639代码或其他任何代码)的确切含义并不挑剔。我也理解,可能没有确切的答案,因为,例如,一份阿拉伯文文档除了阿拉伯文块(,)中的字符外,还可以包含拉丁语和其他文本。但肯定有一些表格上写着“这些语言和这些块一起使用”。。。我对格式(XML、CSV等)也不挑剔,我可以轻松地将其转换为可用于我的应用程序的数据。我再次意识到,引用可能会将脚本连接到块,而不是语言(尽管脚本可以映射到语言)

我意识到这将是一个多对多表(因为许多语言使用来自多个块的字符,并且许多块由多个语言使用);我确实意识到这一点无法准确回答,因为Unicode代码点不是特定于语言的——然而,“这个国家有哪些语言”的问题也无法回答(对于大多数国家来说,答案可能是“大多数语言”),但这样的表()仍然可以创建,有意义且有用


至于我为什么想要这样一个东西:我想增强代码块的全局热图和语言列表;我也有一个游戏的概念,我正在修补。除此之外,其他人对此可能还有很多其他用途(字体创建?谷歌翻译API消失后的启发式、快速、最佳猜测语言检测?研究项目?)

没有此类资源,原因很简单:Unicode代码点分配与语言无关。因此,每个代码点都可以被多种语言使用

当然,有些字符直接映射到一种语言,但通常每个代码点都是共享的。因此,创建指向语言表的代码点没有多大意义


如果您正在寻找检测语言的方法,那么这肯定不是方法。

您自己生成(近似)数据怎么样?一个例子是使用不同的方法——下载每种语言的足够数据,生成文档中使用的字符列表和计数,并设置阈值以消除从其他语言借用的文本的小实例。这将是一个近似的,但可能是一个很好的起点。

我从Unicode.org自己那里得到了答案!在CLDR子项目中,有以下文件:

对于每个语言id,您可以搜索“ExamplarCharacters”:


[\u200C\u200D\u200E\u200F]
[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]
[ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي]

或者,这里有一个页面:看起来像所有的页面。我将致力于将这些数据重新整理成某种langid->blockid映射,在该映射中,我可能会意识到@borrible“答案”(而不是让我的答案)。

我认为CLDR的范例分析人员不会给出准确的结果。 您可以从的和文件中找到每个角色的脚本属性。要了解更多信息,请阅读此()


有了脚本后,您可以使用AddmentalData.xml的languageData部分将其与CLDR中的语言关联起来。那么可以属于多种语言的块呢?是的@Ignacio,肯定会存在多对多关系。我认为这是不可回答的。考虑借用其他语言的单词。英语通常没有重音,但你可以在任何英语词典中找到“résumé”。@Joe-是的,这是一个折痕,但仍然可以将这些大致映射到语言的核心,而不需要输入单词或不寻常的形式。即使没有一个确切的答案,也应该有一个统计上接近的答案t@tchrist-见我最后一段关于真正目的的内容。是的,OED包含非ASCII字符。但我确信90%以上的字符是ASCII码;一份典型的俄罗斯报纸可能主要包含西里尔语等。每个人似乎都认为这是不可能做到的,但我只是要求根据核心语言进行总结。没有人能真正声称不可能确定CJK块主要由中国人、日本人或韩国人使用;或者说,阿拉伯语文本主要使用来自阿拉伯语块的代码点……同样,我意识到所有这些,但是很明显,一些块与某些特定语言或语言集(阿拉伯语、西里尔语、CJK…)相关联。不是针对所有块或代码点,而是至少针对某些块或代码点。因此,似乎有理由相信这应该被记录在西里尔语不是语言,而是脚本的地方。阿拉伯语既是一种语言也是一种脚本,但该脚本用于阿拉伯语以外的许多语言。我认为您的一般企业最多只能查找脚本,而不是语言…@larson4:也就是说,Unicode被划分为子范围。其中一些是相邻的,另一些(如拉丁语)是非常零碎的
<exemplarCharacters>[\u064B \u064C \u064D \u064E \u064F \u0650 \u0651 \u0652 ء آ أ ؤ إ ئ ا ب ت ة ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي ى]</exemplarCharacters>
<exemplarCharacters type="auxiliary">[\u200C\u200D\u200E\u200F]</exemplarCharacters>
<exemplarCharacters type="currencySymbol" draft="contributed">[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>
<exemplarCharacters type="index" draft="contributed">[ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي]</exemplarCharacters>