我不确定您要问什么,但与特定问题最接近的问题似乎是,“在当前情况下,我们应该如何以用户可以看到其本地数字字形的方式处理数学应用程序中的数字?”
非常简单:编写自己的数学应用程序。它将具有其数据的模型,例如,整数或实数。它还将具有该数据的视图,例如,以用户知道如何阅读的符号表示数字的字符串。(这些术语指的是模型-视图-控制器架构。)在您自己的应用程序中,为您的视图编写代码,使用阿拉伯数字字符、孟加拉数字字符、中文数字字符或任何您想要的表示来显示数字。
正如 Esailija 所写,通用语言环境数据存储库 (CLDR)和Unicode 国际类 (ICU) 库可以帮助您编写此应用程序。
你写,
无论其外观如何,我都找不到任何代表数字的字符。因此,目前大多数(或所有)软件只能将西方阿拉伯数字字符理解为数字。所以你不能在 MS Excel 中输入其他数字字符。
我认为这三个句子没有逻辑联系。
您无法在 Microsoft Excel 中输入其他数字字符的原因是,Microsoft 做出了一个商业决策,即如果 Excel 仅用西方数字表示数字,它就足够有用了,而且他们没有必要构建您寻求的多语言电子表格。
目前大多数(或所有)软件仅将西方阿拉伯数字字符理解为数字的原因是因为许多其他软件开发人员已做出与 Microsoft 相同的业务决策。这不是因为数字是如何以 Unicode 编码的。
您是正确的,Unicode 标准没有代表数字的字符,无论其外观如何。这是因为 Unicode 标准处理字符,使用一个非常详细的模型来说明什么是字符,什么不是字符。Unicode 标准(通常)不与其他抽象数据模型实体一起使用。
所以:去编写具有您想要的行为的数学应用程序。平台和 API 对您开放。Unicode 标准以及 CLDR 和 ICU 为您提供了工具。做大事!
您添加:
显然,我们可以在应用程序中对所有 460 个十进制数字字符进行硬编码,并在内部将它们视为数字,但我正在寻找更合适的解决方案......我们如何使用操作系统范围的解决方案来解决这个问题?
您宣布解决方案“合适”的标准是什么?对十进制数字字符进行硬编码,或者更具体地说,编写一组特定于语言的例程以将抽象数字数据类型转换为各种语言的文本表示,是我认为可行的唯一方法。“操作系统范围的解决方案”是指可以安装到操作系统中的解决方案,它会改变现有应用程序的行为吗?好吧,您可以对此抱有希望,但我认为它不会传递给当前的操作系统。
请注意,特定于语言的例程可能可以使用RuleBasedNumberFormat
ICU 类来实现。此类可以将抽象数字格式化为文本字符串,例如“(例如,25,3476 为“25,376”或“vingt-cinq mille trois cents soixante-seize”或“fünfundzwanzigtausenddreihundertsechsundsiebzig”)' . 人们可能可以使用此类编写代码,以使用您确定的 46 种语言数字集中的任何一种来格式化数字。但是,应用软件仍然需要结合 ICU 和数字格式代码。
更新:修改了我的答案以跟踪原始发帖人问题中的措辞变化。添加了对“操作系统范围解决方案”的呼吁的响应。修复了“模型-视图-控制器”中的维基百科链接。
更新:删除虚假单词“the”。