这个问题可能是堆栈溢出的边界,所以如果它看起来过于离题,我提前道歉。我正在编写一个涉及多种语言的程序,我需要一个将语言映射到 Unicode 点的表。熟悉 Unicode 的人都知道,字符被划分为“块”,例如拉丁文、西里尔文等。当然,大多数使用拉丁字符的语言不会使用所有拉丁字符,大多数使用西里尔字符的语言都会使用不全部使用西里尔字符等。我对将英语仅映射到英语中使用的字符、西班牙语仅映射到西班牙语中使用的字符等的表感兴趣。无需涵盖世界上的所有语言(因为这将是几乎不可能)但至少是一些更常见的语言。(即便如此,这将是一个涉及多对多关系的相当广泛的表。)我不确定这样的表是否存在。(如果没有,我可能会把它变成一个开源项目,因为它对我非常有用,也可能对其他人有用。)
1 回答
CLDR是 Unicode 通用语言环境数据存储库,包含大量语言的字符集合定义。该exemplarCharacters
元素指定正常书写该语言的单词所需的字符。此元素的当前定义可以在By-Type Chart:misc.exemplarCharacters页面(按书写系统分组)上查看,但对于自动处理,您可能会发现 XML 文件更合适。exemplarCharacters-other 元素当前包含类似的标点符号数据。
这可能是一般此类信息的最佳可用汇编,但它在概念上非常模糊(它并没有真正尝试定义用于编写语言的字符意味着什么),并且不同语言的信息已收集在一个开放但不包含一般质量控制的过程。
元素的含义在 LDML 规范第5.6 节字符元素中定义。请注意描述“该<characters>
元素提供有关区域设置中常用字符的可选信息,以及有助于选择适合区域设置的资源或数据的信息,例如在选择通常用于传输数据的字符编码时使用当地语言。” 这是一个相当奇怪的观点,尤其是在 Unicode Consortium 文档中,因为我们可以使用 UTF-8,它涵盖了所有语言。但还有其他语言中使用的字符信息可能有用的问题,例如选择文本字体,或初步检查输入数据,或设置 OCR 扫描参数,或定义键盘设置。这些上下文很可能需要对“语言中使用的字符”这个概念进行不同的定义。